力扣题目汇总(机器人返回原点,按奇偶排序,数字的补数)
程序员文章站
2022-11-05 11:26:49
力扣题目汇总(机器人返回原点,按奇偶排序,数字的补数 "机器人能否返回原点" 1.题目描述 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束 。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有 ......
力扣题目汇总(机器人返回原点,按奇偶排序,数字的补数
1.题目描述
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。
移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 r
(右),l
(左),u
(上)和 d
(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。
注意:机器人“面朝”的方向无关紧要。 “r” 将始终使机器人向右移动一次,“l” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。
示例 1:
输入: "ud" 输出: true 解释:机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终回到它开始的原点。因此,我们返回 true。
示例 2:
输入: "ll" 输出: false 解释:机器人向左移动两次。它最终位于原点的左侧,距原点有两次 “移动” 的距离。我们返回 false,因为它在移动结束时没有返回原点。
2.解题思路
#思路一 把水平和垂直分开用两个值代表,lr代表水平加减,ud代表垂直方向加减 #思路二(再思路一上进行改进) lr字符串存在的个数相同和ud字符串存在的个数相同 及返回原点
3.解题
#思路一解答 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
1.题目描述
给定一个非负整数数组 a
,返回一个数组,在该数组中, a
的所有偶数元素之后跟着所有奇数元素。
你可以返回满足此条件的任何数组作为答案。
示例:
输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
提示:
1 <= a.length <= 5000
0 <= a[i] <= 5000
2.解题思路
利用偶数特效%2余0然后进行对调位置
3.解题
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
1.题目描述
给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。
注意:
- 给定的整数保证在32位带符号整数的范围内。
- 你可以假定二进制数不包含前导零位。
示例 1:
输入: 5 输出: 2 解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。
示例 2:
输入: 1 输出: 0 解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。
2.解题思路
按照题目描述走,先变成二进制,然后去除前倒数,再01兑换,再二进制变成整型
3.解题
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)