zoukankan      html  css  js  c++  java
  • LeetCode --- 字符串系列 --- 机器人能否返回原点

    机器人能否返回原点

    小注释:都说算法题刷的多了,越做越熟练,因为差不多都是那几个套路

    今天碰到这个题目,有点感触。很快就解出来了,虽然是简单题。

    做这题之前,遇到的是分割平衡字符串

    有点类似,所以能很快解出下面这道题


    题目

    在二维平面上,有一个机器人从原点 (0, 0) 开始。

    给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。

    移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。

    机器人的有效动作有 R(右),L(左),U(上)和 D(下)。

    如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。

    注意:机器人“面朝”的方向无关紧要。

    “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。

    此外,假设每次移动机器人的移动幅度相同。


    示例

    示例 1:
    
    输入: "UD"
    输出: true
    解释:机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终回到它开始的原点。因此,我们返回 true。
    
    示例 2:
    
    输入: "LL"
    输出: false
    解释:机器人向左移动两次。它最终位于原点的左侧,距原点有两次 “移动” 的距离。我们返回 false,因为它在移动结束时没有返回原点。
    

    来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/robot-return-to-origin

    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


    解题思路

    1、不考虑 Y 轴情况,在 X 轴上,向左多少步,就向右多少步,最后机器人肯定是回到原点
    2、不考虑 X 轴情况,在 Y 轴上,向左多少步,就向右多少步,最后机器人肯定是回到原点
    3、结合上面两点,定义两个变量 x,y 分别对应 X 轴和 Y 轴上的坐标值
    前进和后退 x 和 y 随之增加或者减少,最终如果都等于 0,那么可断定机器人回到原点
    

    题解

    let judgeCircle = function(moves) {
        let x = 0
        let y = 0
        for (let m of moves) {
            // 不考虑 X 轴情况,在 Y 轴上,向左多少步,就向右多少步,最后机器人肯定是回到原点
            if (m === 'U') {
                y++
            }
            if (m === 'D') {
                y--
            }
            // 不考虑 Y 轴情况,在 X 轴上,向左多少步,就向右多少步,最后机器人肯定是回到原点
            if (m === 'L') {
                x++
            }
            if (m === 'R') {
                x--
            }
        }
        // 最终 x 和 y 如果都等于 0,那么可断定机器人回到原点
        return y === 0 && x === 0
    };
    

    都读到最后了、留下个建议如何
  • 相关阅读:
    c#中的委托和事件
    C++STL中的vector
    java中的static
    java中public private protected区别
    java中抽象类与接口
    c++中的namespace
    北京“新城卓越”黑中介租房感受
    如何删除当前正在使用的SQLLite文件?
    SVN将一台服务器上的代码迁移到另一台服务器上
    使用PowerDesigner对NAME和COMMENT互相转换
  • 原文地址:https://www.cnblogs.com/linjunfu/p/12643760.html
Copyright © 2011-2022 走看看