Leetcode.1041 困于环中的机器人

这篇具有很好参考价值的文章主要介绍了Leetcode.1041 困于环中的机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目链接

Leetcode.1041 困于环中的机器人 Rating : 1521

题目描述

在无限的平面上,机器人最初位于 (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 < = i n s t r u c t i o n s . l e n g t h < = 100 1 <= instructions.length <= 100 1<=instructions.length<=100
  • instructions[i]仅包含 'G', 'L', 'R'

解法:脑筋急转弯+模拟

当机器人执行完 i n s t r u c t i o n s instructions instructions 的所有指令后,它所处的位置为 ( x , y ) (x,y) (x,y),方向为 d i r dir dir

  • x = = 0 & & y = = 0 x ==0 \&\&y == 0 x==0&&y==0,当执行完指令之后,还是处于原点,说明根本就没移动。所以机器人不能离开,返回 true
  • x ≠ 0 ∣ ∣ y ≠ 0 x \neq 0 || y \neq 0 x=0∣∣y=0,当执行完指令之后,方向 d i r dir dir向南的。当 第二轮执行结束的时候,方向 d i r dir dir 又会向北,并且又会回到原点 ( 0 , 0 ) (0,0) (0,0)。所以机器人不能离开,返回 true
  • x ≠ 0 ∣ ∣ y ≠ 0 x \neq 0 || y \neq 0 x=0∣∣y=0,当执行完指令之后,方向 d i r dir dir向东的。当 第四轮执行结束的时候,方向 d i r dir dir 又会向北,并且又会回到原点 ( 0 , 0 ) (0,0) (0,0)。所以机器人不能离开,返回 true
  • x ≠ 0 ∣ ∣ y ≠ 0 x \neq 0 || y \neq 0 x=0∣∣y=0,当执行完指令之后,方向 d i r dir dir向西的。当 第四轮执行结束的时候,方向 d i r dir dir 又会向北,并且又会回到原点 ( 0 , 0 ) (0,0) (0,0)。所以机器人不能离开,返回 true
  • x ≠ 0 ∣ ∣ y ≠ 0 x \neq 0 || y \neq 0 x=0∣∣y=0,当执行完指令之后,方向 d i r dir dir向北的那么说明机器人会一直沿着北面移动,所以最后能够离开,返回 false

时间复杂度: O ( n ) O(n) O(n)

C++代码:文章来源地址https://www.toymoban.com/news/detail-417400.html

class Solution {
public:
    bool isRobotBounded(string instructions) {
        int d[4][4] = {{0,1} , {1,0} , {0,-1} , {-1,0}};
        //初始位置
        int x = 0 , y = 0;
        //初始指向
        int dir = 0;

        for(auto c:instructions){
            if(c == 'G'){
                x += d[dir][0];
                y += d[dir][1];
            }
            else if(c == 'L'){
                dir = (dir + 3) % 4;
            }
            else if(c == 'R'){
                dir = (dir + 1) % 4;
            }
        }

        return dir != 0 || (x == 0 && y == 0);
    }
};

到了这里,关于Leetcode.1041 困于环中的机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 困于环中的机器人

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

    2024年02月19日
    浏览(13)
  • 【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

    【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴 们点赞、关注! class   Solution :      def   findContentChildren ( self ,  g :  List [ int ],  s

    2024年02月04日
    浏览(14)
  • 机器人抓取 [ 题目/摘要 ] 更新中..

    题目:Robotic Grasping of Novel Objects using Visionl 链接:机器人抓取新物体 | IEEE Xplore(IEEE的Xplore) 【端到端】 摘要:我们考虑抓取新物体的问题,特别是第一次通过视觉看到的物体。抓取以前未知的物体,一个没有3D模型的物体,是一个具有挑战性的问题。此外,即使给定一个模

    2024年02月21日
    浏览(8)
  • 竞赛选题 题目:基于深度学习的中文对话问答机器人

    竞赛选题 题目:基于深度学习的中文对话问答机器人

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的中文对话问答机器人 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 整个项目分为 数据清洗 和 建立模型两个部分。 (1)主要定义了seq2seq这样

    2024年02月04日
    浏览(19)
  • 计算机设计大赛 题目:基于深度学习的中文对话问答机器人

    计算机设计大赛 题目:基于深度学习的中文对话问答机器人

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的中文对话问答机器人 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 整个项目分为 数据清洗 和 建立模型两个部分。 (1)主要定义了seq2seq这样

    2024年04月12日
    浏览(918)
  • leetcode657. 机器人能否返回原点

    题目描述 解题思路 执行结果 leetcode657. 机器人能否返回原点 题目描述 机器人能否返回原点 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。

    2024年02月11日
    浏览(7)
  • Leetcode-657. 机器人能否返回原点

    题目: 在二维平面上,有一个机器人从原点  (0, 0)  开始。给出它的移动顺序,判断这个机器人在完成移动后是否在   (0, 0)  处结束 。 移动顺序由字符串  moves  表示。字符  move[i]  表示其第  i  次移动。机器人的有效动作有  R (右), L (左), U (上)和  D (下)

    2024年02月20日
    浏览(6)
  • ​LeetCode解法汇总874. 模拟行走机器人

    https://github.com/September26/java-algorithms 机器人在一个无限大小的 XY 网格平面上行走,从点  (0, 0)  处开始出发,面向北方。该机器人可以接收以下三种类型的命令  commands  : -2  :向左转  90  度 -1  :向右转  90  度 1 = x = 9  :向前移动  x  个单位长度 在网格上有一些格子

    2024年02月11日
    浏览(12)
  • 医疗机器人软件中的机器人协作技术:机器人技术在医疗保健中的应用

    作者:禅与计算机程序设计艺术 引言 医疗机器人软件中机器人协作技术是近年来备受关注的研究热点。随着机器人技术的不断发展,医疗机器人应用的范围也越来越广泛。机器人协作技术可以为医疗机器人提供更加高效、精确、安全、可靠的操作,大大提高医疗服务的质量

    2024年02月06日
    浏览(11)
  • 医疗机器人软件中的机器人机器人编程技术:机器人技术的创新应用

    作者:禅与计算机程序设计艺术 随着科技的发展,医疗机器人逐渐成为人们关注的热门话题。医疗机器人可以在医院、康复中心等各种场合为病人提供帮助,不仅可以提高工作效率,还能降低医护人员的工作强度。而机器人编程技术则是实现医疗机器人功能的关键,本文将围

    2024年02月07日
    浏览(18)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包