LeetCode | 机器人能否返回原点

放假的时间已经过去一半了,每天坚持看一个多小时的书,时间虽然不多,但是能专心把书看进去就可以了。今天分享的是 LeetCode 上面的第 657 题,题目是《机器人能否返回原点》,这也是一道简单的题。

LeetCode 题库的第 657 题——机器人能否返回原点

题的解法也很简单,先定义坐标,并设置坐标为(0, 0),然后按照给定的方向去移动,在移动的过程中修改方向,移动完以后再次判断坐标是否为(0, 0)即可。代码如下:

 1 bool judgeCircle(char* moves) {
 2     int x = 0;
 3     int y = 0;
 4
 5     int len = strlen(moves);
 6
 7     int i;
 8
 9     for ( i = 0; i < len; i ++ ) {
10         switch ( moves[i] ) {
11             case ‘U‘: {
12                 y ++;
13                 break;
14             }
15             case ‘D‘: {
16                 y --;
17                 break;
18             }
19             case ‘L‘: {
20                 x --;
21                 break;
22             }
23             case ‘R‘: {
24                 x ++;
25                 break;
26             }
27         }
28     }
29
30     if ( x == 0 && y == 0 ) {
31         return 1;
32     }
33
34     return 0;
35 }

LeetCode 有关于代码执行时间和内存消耗的提示,上面的代码执行的时间是 8 ms,可以试着进行优化。试想一下,如果步数是单步,肯定无法回到原点,而步数是偶数步则可能会回到原点,因此可以增加一个判断,增加后的代码如下:

 1 bool judgeCircle(char* moves) {
 2     int x = 0;
 3     int y = 0;
 4
 5     int len = strlen(moves);
 6
 7     if ( len % 2 != 0 ) {
 8         return 0;
 9     }
10
11     int i;
12
13     // 这里和上面的代码相同
14
15     if ( x == 0 && y == 0 ) {
16         return 1;
17     }
18
19     return 0;
20 }

增加了上面的判断之后,代码由原来的 8 ms 变成了 4 ms,这也算是有了很大的提高。我试着把 y 变量去掉,只使用一个 x 变量去解决该问题,但是代码会有 bug,虽然 LeetCode 中的测试用例没有测试出来,但是时间又回到了 8 ms。至于其他的解决方法,就不再去想了。



欢迎大家关注微信公众号:“码农UP2U”

原文地址:https://www.cnblogs.com/tosser/p/11619800.html

时间: 2024-11-08 19:24:02

LeetCode | 机器人能否返回原点的相关文章

LeetCode --- 字符串系列 --- 机器人能否返回原点

机器人能否返回原点 小注释:都说算法题刷的多了,越做越熟练,因为差不多都是那几个套路 今天碰到这个题目,有点感触.很快就解出来了,虽然是简单题. 做这题之前,遇到的是分割平衡字符串 有点类似,所以能很快解出下面这道题 题目 在二维平面上,有一个机器人从原点 (0, 0) 开始. 给出它的移动顺序,判断这个机器人在完成移动后是否在?(0, 0) 处结束. 移动顺序由字符串表示.字符 move[i] 表示其第 i 次移动. 机器人的有效动作有?R(右),L(左),U(上)和 D(下). 如果机器人在

leetcode——973.最接近原点的K个点

class Solution: def kClosest(self, points, K: int) : points.sort(key=lambda P:P[0]**2+P[1]**2) return points[:K] 别人的想法. ——2019.10.7 原文地址:https://www.cnblogs.com/taoyuxin/p/11629860.html

leetcode: 0204 完成的

目录 notes java switch 语句 java api: array 直接有 length 属性 ,不必:length() sol 657 0204 需要完成的 ? 657. 机器人能否返回原点 https://leetcode-cn.com/problems/robot-return-to-origin/ ? 1299. 将每个元素替换为右侧最大元素 https://leetcode-cn.com/problems/replace-elements-with-greatest-ele

leet

# 题名1 两数之和    2 两数相加    3 无重复字符的最长子串    4 寻找两个有序数组的中位数    5 最长回文子串    6 Z 字形变换    7 整数反转    8 字符串转换整数 (atoi)    9 回文数    10 正则表达式匹配    11 盛最多水的容器    12 整数转罗马数字    13 罗马数字转整数    14 最长公共前缀    15 三数之和    16 最接近的三数之和    17 电话号码的字母组合    18 四数之和    19 删除链表

【Leetcode周赛】从contest-41开始。(一般是10个contest写一篇文章)

Contest 41 ()(题号) Contest 42 ()(题号) Contest 43 ()(题号) Contest 44 (2018年12月6日,周四上午)(题号653-656) 链接:https://leetcode.com/contest/leetcode-weekly-contest-44 比赛情况记录:就做出来两题,第三题不难,然而就是在算坐标的时候卡住了.orz.结果:2/4,ranking:637/2272.第四题没看题,第三题搞得心情不好了orz. [653]Two Sum

【leetcode】657. Robot Return to Origin

Algorithm [leetcode]657. Robot Return to Origin https://leetcode.com/problems/robot-return-to-origin/ 1)problem There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its moves, judge if this robot ends up at (0,

[Leetcode]657. Robot Return to Origin

Easy There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its moves, judge if this robot ends up at (0, 0) after it completes its moves. The move sequence is represented by a string, and the character moves[i]

leetcode LCP 3. 机器人大冒险 java

题目: 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0).小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动.指令有两种: U: 向y轴正方向移动一格R: 向x轴正方向移动一格.不幸的是,在 xy 平面上还有一些障碍物,他们的坐标用obstacles表示.机器人一旦碰到障碍物就会被损毁. 给定终点坐标(x, y),返回机器人能否完好地到达终点.如果能,返回true:否则返回false. 示例 1: 输入:command = "URR",

qq聊天机器人 群发工具 (java版) (三)

本篇简单讲解一下如何接收QQ消息. 在成功登陆QQ后,要每隔一段时间发一个POST请求,用来维持登陆状态,同时也是用来接收消息的,请求如下: Request URL:http://d.web2.qq.com/channel/poll2 Request Method:POST Content-Type:application/x-www-form-urlencoded Referer:http://d.web2.qq.com/proxy.html?v=20130916001&callback=1&a