在二維平面上,有一個機器人從原點 (0, 0) 開始。給出它的移動順序,判斷這個機器人在完成移動後是否在 (0, 0) 處結束。python
移動順序由字符串表示。字符 move[i] 表示其第 i 次移動。機器人的有效動做有 R
(右),L
(左),U
(上)和 D
(下)。若是機器人在完成全部動做後返回原點,則返回 true。不然,返回 false。數組
注意:機器人「面朝」的方向可有可無。 「R」 將始終使機器人向右移動一次,「L」 將始終向左移動等。此外,假設每次移動機器人的移動幅度相同。code
示例 1:排序
輸入: "UD" 輸出: true 解釋:機器人向上移動一次,而後向下移動一次。全部動做都具備相同的幅度,所以它最終回到它開始的原點。所以,咱們返回 true。
示例 2:leetcode
輸入: "LL" 輸出: false 解釋:機器人向左移動兩次。它最終位於原點的左側,距原點有兩次 「移動」 的距離。咱們返回 false,由於它在移動結束時沒有返回原點。
#思路一 把水平和垂直分開用兩個值表明,LR表明水平加減,UD表明垂直方向加減 #思路二(再思路一上進行改進) LR字符串存在的個數相同和UD字符串存在的個數相同 及返回原點
#思路一解答 class Solution: def judgeCircle(self, moves: str) -> bool: level = 0 level_list = ['R','L'] vertical = 0 vertical_list = ['U','D'] for a in moves: if a =='R': level += 1 elif a=='L': level -=1 elif a =='U': vertical += 1 elif a == 'D': vertical -= 1 if level == 0 and vertical ==0: return True else: return False #思路二解答 class Solution(object): def judgeCircle(self, moves): """ :type moves: str :rtype: bool """ if moves.count('D') == moves.count('U') and moves.count('L') == moves.count('R'): return True else: return False
給定一個非負整數數組 A
,返回一個數組,在該數組中, A
的全部偶數元素以後跟着全部奇數元素。字符串
你能夠返回知足此條件的任何數組做爲答案。get
示例:it
輸入:[3,1,2,4] 輸出:[2,4,3,1] 輸出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也會被接受。
提示:io
1 <= A.length <= 5000
0 <= A[i] <= 5000
利用偶數特效%2餘0而後進行對調位置
class Solution: def sortArrayByParity(self, A: List[int]) -> List[int]: i = 0 for j in range(len(A)): if A[j] % 2 == 0: A[i], A[j] = A[j], A[i] i += 1 return A
給定一個正整數,輸出它的補數。補數是對該數的二進制表示取反。class
注意:
示例 1:
輸入: 5 輸出: 2 解釋: 5的二進制表示爲101(沒有前導零位),其補數爲010。因此你須要輸出2。
示例 2:
輸入: 1 輸出: 0 解釋: 1的二進制表示爲1(沒有前導零位),其補數爲0。因此你須要輸出0。
按照題目描述走,先變成二進制,而後去除前倒數,再01兌換,再二進制變成整型
class Solution: def findComplement(self, num: int) -> int: num = bin(num) num = num[2:] new_num = '' for a in num: if a == '0': new_num += '1' else: new_num += '0' return int(new_num,2)
有更加好的思路,或者解題方法評論區留言謝謝