入门力扣自学笔记257 C++ (题目编号:1041)

这篇具有很好参考价值的文章主要介绍了入门力扣自学笔记257 C++ (题目编号:1041)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1041. 困于环中的机器人

题目:

在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意:

北方向 是y轴的正方向。
南方向 是y轴的负方向。
东方向 是x轴的正方向。
西方向 是x轴的负方向。
机器人可以接受下列三条指令之一:

"G":直走 1 个单位
"L":左转 90 度
"R":右转 90 度
机器人按顺序执行指令 instructions,并一直重复它们。

只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。


示例 1:

输入:instructions = "GGLLGG"
输出:true
解释:机器人最初在(0,0)处,面向北方。
“G”:移动一步。位置:(0,1)方向:北。
“G”:移动一步。位置:(0,2).方向:北。
“L”:逆时针旋转90度。位置:(0,2).方向:西。
“L”:逆时针旋转90度。位置:(0,2)方向:南。
“G”:移动一步。位置:(0,1)方向:南。
“G”:移动一步。位置:(0,0)方向:南。
重复指令,机器人进入循环:(0,0)——>(0,1)——>(0,2)——>(0,1)——>(0,0)。
在此基础上,我们返回true。


示例 2:

输入:instructions = "GG"
输出:false
解释:机器人最初在(0,0)处,面向北方。
“G”:移动一步。位置:(0,1)方向:北。
“G”:移动一步。位置:(0,2).方向:北。
重复这些指示,继续朝北前进,不会进入循环。
在此基础上,返回false。


示例 3:

输入:instructions = "GL"
输出:true
解释:机器人最初在(0,0)处,面向北方。
“G”:移动一步。位置:(0,1)方向:北。
“L”:逆时针旋转90度。位置:(0,1).方向:西。
“G”:移动一步。位置:(- 1,1)方向:西。
“L”:逆时针旋转90度。位置:(- 1,1)方向:南。
“G”:移动一步。位置:(- 1,0)方向:南。
“L”:逆时针旋转90度。位置:(- 1,0)方向:东方。
“G”:移动一步。位置:(0,0)方向:东方。
“L”:逆时针旋转90度。位置:(0,0)方向:北。
重复指令,机器人进入循环:(0,0)——>(0,1)——>(- 1,1)——>(- 1,0)——>(0,0)。
在此基础上,我们返回true。


提示:

1 <= instructions.length <= 100
instructions[i] 仅包含 'G', 'L', 'R'


来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/robot-bounded-in-circle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:

首先,我们定义一个4行2列的数组,用来存储机器人向东南西北方向移动的坐标,从而方便加和。

其次,我们来判断机器人是否可以返回到原点,返回原点有两种情况:

1.机器人返回到原点,也就是(0,0),并且必须面向北面。

2.机器人移动的位置不为0。这里的不为0是指向左移动+1,向右移动-1,最后这个位置参数只要不是0,那么机器人哪怕多经过几次循环,也一定可以返回到原点。

最后,我跟根据上述两种情况,来判断机器人是否可以进入循环即可。文章来源地址https://www.toymoban.com/news/detail-410449.html


代码:

class Solution {
public:
    int dir[4][2] = {{0,1},{-1,0},{0,-1},{1,0}};
    bool isRobotBounded(string instructions) {
        int status = 0;
        int x = 0,y = 0;
        for(char c : instructions)
        {
            if(c == 'G')
            {
                x += dir[status][0];
                y += dir[status][1];
            }
            else if(c == 'L')
            {
                status += 1;
                status %= 4;
            }
            else
            {
                status += 4;
                status -= 1;
                status %= 4;
            }
        }
        if(x == 0 && y == 0 || status != 0)
            return true;
        else
            return false;
    }
};

到了这里,关于入门力扣自学笔记257 C++ (题目编号:1041)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ​力扣解法汇总1041. 困于环中的机器人

    https://github.com/September26/java-algorithms 在无限的平面上,机器人最初位于  (0, 0)  处,面朝北方。注意: 北方向  是y轴的正方向。 南方向  是y轴的负方向。 东方向  是x轴的正方向。 西方向  是x轴的负方向。 机器人可以接受下列三条指令之一: \\\"G\\\" :直走 1 个单位 \\\"L\\\" :左转

    2023年04月11日
    浏览(38)
  • 【1041. 困于环中的机器人】

    来源:力扣(LeetCode) 描述: 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意: 北方向 是 y 轴的正方向。 南方向 是 y 轴的负方向。 东方向 是 x 轴的正方向。 西方向 是 x 轴的负方向。 机器人可以接受下列三条指令之一: \\\"G\\\" :直走 1 个单位 \\\"L\\\" :左转 90 度 \\\"R

    2023年04月15日
    浏览(35)
  • Leetcode.1041 困于环中的机器人

    Leetcode.1041 困于环中的机器人 Rating : 1521 在无限的平面上,机器人最初位于 (0, 0) 处, 面朝北方 。注意: 北方向 是y轴的正方向。 南方向 是y轴的负方向。 东方向 是x轴的正方向。 西方向 是x轴的负方向。 机器人可以接受下列三条指令之一: \\\"G\\\" :直走 1 个单位 \\\"L\\\" :左转

    2023年04月18日
    浏览(34)
  • 【每日一题】1041. 困于环中的机器人

    1041. 困于环中的机器人 - 力扣(LeetCode) 在无限的平面上,机器人最初位于  (0, 0)  处,面朝北方。注意: 北方向  是y轴的正方向。 南方向  是y轴的负方向。 东方向  是x轴的正方向。 西方向  是x轴的负方向。 机器人可以接受下列三条指令之一: \\\"G\\\" :直走 1 个单位 \\\"L\\\" :

    2024年02月09日
    浏览(39)
  • 1041.困于环中的机器人 && 874.模拟行走的机器人 && 模拟行走的机器人 2 (三道机器人的模拟题)

    对于直接行走类的题,我们都可以用 int[][] dirs = new int[][]{{0,1}, {-1,0}, {0,-1}, {1,0}}; 来表示向 北 西 南 东 走一步 可以 int x = 0, y = 0, d = 0 xy 表示坐标,d表示方向,要和上面表示的方向对应 由于是对应的 d = 0 表示北 d = 1 表示西 d = 2 表示南 d = 3 表示东 即逆时针一圈 左转: d =

    2024年02月16日
    浏览(48)
  • C++力扣题目77--组合

    给定两个整数  n  和  k ,返回范围  [1, n]  中所有可能的  k  个数的组合。 你可以按  任何顺序  返回答案。 示例 1: 示例 2: 提示: 1 = n = 20 1 = k = n 本题是回溯法的经典题目。 直接的解法当然是使用for循环,例如示例中k为2,很容易想到 用两个for循环,这样就可以输

    2024年01月17日
    浏览(43)
  • C++力扣题目39--组合总和

    给你一个  无重复元素  的整数数组  candidates  和一个目标整数  target  ,找出  candidates  中可以使数字和为目标数  target  的 所有   不同组合  ,并以列表形式返回。你可以按  任意顺序  返回这些组合。 candidates  中的  同一个  数字可以  无限制重复被选取  。如果

    2024年01月17日
    浏览(43)
  • C++力扣题目37--解数独

    力扣题目链接(opens new window) 编写一个程序,通过填充空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 空白格用 \\\'.\\\' 表示。 一个数独。 答案

    2024年01月21日
    浏览(50)
  • C++力扣题目131--分割回文串

    131. 分割回文串 给你一个字符串  s ,请你将   s   分割成一些子串,使每个子串都是  回文串  。返回  s  所有可能的分割方案。 回文串  是正着读和反着读都一样的字符串。 示例 1: 示例 2: 提示: 1 = s.length = 16 s  仅由小写英文字母组成 本题这涉及到两个关键问题:

    2024年01月20日
    浏览(36)
  • 力扣 257. 二叉树的所有路径

    题目来源:https://leetcode.cn/problems/binary-tree-paths/description/    C++题解1:使用递归,声明了全局变量result,遇到叶子节点就将字符串添加到result中。 递归三步法: 1. 确认传入参数:当前节点+已有路径(字符串); 2. 确认终止条件:遇到叶子节点,即左右节点都为空时,将当前

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包