当前位置: 首页 > news >正文

lc1041-困于环中的机器人

题目描述

  • 平面内有一个机器人,有三种指令:
    1. G: 直走一格
    2. L: 左转90度
    3. R: 右转90度
  • 给定一串指令,看机器人是否会在一定范围内转圈

示例

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

题解

  • 思路:模拟 + 分类讨论
    • 第一直觉是哈希表,但分类讨论后得到的结论写起来更方便
    • 回到原点,必为“转圈”
    • 一轮到达终点后
      • 方向向上,必回不到原点
      • 方向向左、右,必会回到原点
      • 方向向下,必会回到原点
func isRobotBounded(instructions string) bool {x, y := 0, 0dx, dy := []int{-1, 0, 1, 0}, []int{0, 1, 0, -1}d := 0for i := range instructions {c := instructions[i]if c == 'G' {x += dx[d]y += dy[d]} else if c == 'L' {d = (d + 3) % 4} else {d = (d + 1) % 4}}return x == 0 && y == 0 || d > 0
}
http://www.sczhlp.com/news/151737/

相关文章:

  • 题解:AT_abc311_h [ABC311Ex] Many Illumination Plans
  • 手机上怎么创建wordpress网站关键词排名优化工具
  • 美团外卖网站开发wordpress添加时间轴
  • 企业网站seo运营网络设计报告网络安全
  • dedecms 网站标题 设置吉林长春seo网站建设网站优化
  • 网站怎么做自己站长兰州网站制作公司
  • 怎么做轴承网站网站评论回复如何做
  • 做网站一般用什么 语言专业的手机网站建设公司排名
  • 网站形式创意设计椅子
  • 七台河做网站做论坛网站需要多少钱
  • 网站正能量免费推广软件搜资源
  • 商丘市做1企业网站的公司铜仁北京网站建设
  • php+网站开发+pdf自动写作文网站
  • 网站工信部本案网络营销专业是学什么的
  • 建立网站用英语怎么说申请网站做自己的产品
  • 河南省网站建设软件开发者英文
  • 实时热点新闻事件2021上海知名seo公司
  • 用模板做网站教程忻府网站建设
  • 绍兴建设网站广州网站建设企业
  • python网站开发实例教程WordPress菜单过滤器
  • 来个黑黑的网站wordpress上传word
  • 男男做暧暧视频网站网站建设及网页设计
  • 净水 技术支持 东莞网站建设wordpress 筛选 文章
  • 怎么样创办一个网站推荐国外网站设计
  • 电子元器件网站怎么做东莞营销商城网站建设
  • Beatty 定理
  • 潍坊高级网站建设推广做网站的团队
  • 做网站跳转百度做公司网站有用吗
  • 奎屯网站建设搜素引擎排名优化计费方式
  • 制作logo免费网站太原住房和城乡建设部网站