zoukankan      html  css  js  c++  java
  • 力扣题目汇总(机器人返回原点,按奇偶排序,数字的补数)

    机器人能否返回原点

    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. 1 <= A.length <= 5000
    2. 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.题目描述

    给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。

    注意:

    1. 给定的整数保证在32位带符号整数的范围内。
    2. 你可以假定二进制数不包含前导零位。

    示例 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)
    

    ```有更加好的思路,或者解题方法评论区留言谢谢``

  • 相关阅读:
    php 小试 mysql-zmq-plugin 和 pthreads
    svn:previous operation has not finished
    Http Header里的Content-Type
    sublime text使用及常见问题
    Less:优雅的写CSS代码
    gulp:更简单的自动化构建工具
    js实现『加载更多』功能实例
    JSONP浅析
    使用JSSDK集成微信分享遇到的一些坑
    JavaScript模板引擎实例应用
  • 原文地址:https://www.cnblogs.com/pythonywy/p/10901160.html
Copyright © 2011-2022 走看看