(模拟) 657. 机器人能否返回原点 ——【Leetcode每日一题】

news2024/11/6 9:48:59

❓ 657. 机器人能否返回原点

难度:简单

在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。

移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。

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

注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。

示例 1:

输入: moves = “UD”
输出: true
解释:机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终回到它开始的原点。因此,我们返回 true。

示例 2:

输入: moves = “LL”
输出: false
解释:机器人向左移动两次。它最终位于原点的左侧,距原点有两次 “移动” 的距离。我们返回 false,因为它在移动结束时没有返回原点。

提示:

  • 1 < = m o v e s . l e n g t h < = 2 ∗ 1 0 4 1 <= moves.length <= 2 * 10^4 1<=moves.length<=2104
  • moves 只包含字符 ‘U’, ‘D’, ‘L’ 和 ‘R

💡思路:

由于要回到原点,所以

  • 向上移动的次数要和向下移动次数相同;
  • 向右移动的次数要和向左移动次数相同。

定义两个变量 upright 记录对应的次数,如果最后都为 0 ,则说明回到了原点。

🍁代码:(C++、Java)

C++

class Solution {
public:
    bool judgeCircle(string moves) {
        if(moves.size() % 2 != 0) return false;
        int up = 0, right = 0;
        for(char c : moves){
            if(c == 'U') up++;
            else if(c == 'D') up--;
            else if(c == 'R') right++;
            else right--;
        }
        return up == 0 && right == 0;
    }
};

Java

class Solution {
    public boolean judgeCircle(String moves) {
        if(moves.length() % 2 != 0) return false;
        int up = 0, right = 0;
        for(char c : moves.toCharArray()){
            if(c == 'U') up++;
            else if(c == 'D') up--;
            else if(c == 'R') right++;
            else right--;
        }
        return up == 0 && right == 0;
    }
}

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 表示 moves 指令串的长度。我们只需要遍历一遍字符串即可。
  • 空间复杂度 O ( 1 ) O(1) O(1),我们只需要常数的空间来存放若干变量。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F4使用18B20温度传感器【串口显示、18B20传感器】

在物联网和嵌入式系统中&#xff0c;温度传感器是常用的传感器之一。18B20温度传感器是一种数字温度传感器&#xff0c;非常适合用于测量环境温度。 本篇博客将介绍如何使用正点原子团队的官方驱动代码读取18B20温度&#xff0c;并通过串口显示。 编写代码 首先&#xff0c;…

mac m1通过qemu和grub制作操作系统引导盘

文章目录 前言grub安装引导盘FAQ参考附录qemu安装ubuntuGRUB安装到回环设备吧啦吧啦... 前言 我电脑是mac m1芯片的&#xff0c;做了如下尝试&#xff0c;最终在第4种方式下成功&#xff1a; 开始用了parallels desktop安装了ubuntu 22版本的&#xff0c;因为本机是arm64芯片…

Linux学习-基础篇

Linux学习 学自尚硅谷武晟然老师&#xff0c;结合老师课堂内容和自己笔记所写博文。 文章目录 Linux学习基础篇桌面与终端文件系统一、文件系统和挂载点二、目录结构bin、sbinlib、lib64usrbootdevetchome、rootoptmedia、mntprocrunsrvsystmpvar Vim编辑器一、整体介绍和模式转…

GridView编辑更新时数据没有改变,总是原来的值

GridView编辑更新时数据没有改变&#xff0c;总是原来的值 猜测原因是&#xff1a;我在点击更新时又执行了page_load方法&#xff0c;又将数据库的值绑定到了gridview上&#xff0c;所以永远都是数据库的值 解决办法&#xff1a;判断页面是不是第一次加载。在page_load方法…

【论文笔记】FASTER SEGMENT ANYTHING:TOWARDS LIGHTWEIGHT SAM FOR MOBILE APPLICATIONS

前脚fast SAM刚发完&#xff0c;后脚mobile SAM就发了 &#xff0c;之前的论文笔记中我一直就认为fast SAM其实应该算是yolo的扩展工作&#xff0c;和原生的SAM架构相去甚远&#xff0c;而且在简介上直接就对&#xff08;gong&#xff09;比&#xff08;ji&#xff09;了FastSA…

VS2022运行一闪而过的解决方案

1.问题情景 编写完程序后&#xff0c;尝试在VS中编译链接运行&#xff08;使用快捷键F5或者fnF5或者ctrlfnF5&#xff0c;不同的电脑可能不太一样&#xff09;发现控制台一闪而过。 2.解决方案 解决方案&#xff1a;右击“项目”->“链接器”->“子系统”->修改为“…

云原生——什么是云原生?

❄️作者介绍&#xff1a;奇妙的大歪❄️ &#x1f380;个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01;&#x1f380; &#x1f43d;个人简介&#xff1a;云计算网络运维专业人员&#x1f43d; 前言 伴随云计算的滚滚浪潮&#xff0c;云原生(CloudNative…

Matlab中统计矩阵中元素个数的方法

1、 tabulate函数 a [1,2,1,3,1,4,1,5,2,3,1,4,2,5,4,2];tabulate(a)第一列代表了元素&#xff0c;第二类代表该元素出现的个数&#xff0c;第三列代表该元素的占比。 2、find函数和length函数 判断矩阵a中元素2出现的次数 a [1,2,1,3,1,4,1,5,2,3,1,4,2,5,4,2]; length(…

Cadence 生成智能 PDF 的方法

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示&#xff1a;这里可以添加技术概要 项目设计完成后&#xff0c;原理图文件需要导出 PDF 文档进行归档&#xff0c;过去导出的 PDF 文 件不带属性&#xff0c;网络标识不可选择&#xff0c;查找元器件和网络标识不…

自定义类创建数组的赋值;并回复:窗体图片时间

缘由https://bbs.csdn.net/topics/392551630 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;…

Nacos 配置更新的工作流程

首先&#xff0c;Nacos 是采用长轮训的方式向 Nacos Server 端发起配置更新查询的功能。所谓长轮训&#xff0c;&#xff08;如图&#xff09;就是客户端发起一次轮训请求到服务端&#xff0c;当服务端配置没有任何变更的时候&#xff0c;这个连接一直打开。 直到服务端有配置或…

微分方程应用——笔记整理

首先&#xff0c;根据正常思路走&#xff0c;化简得到式子&#xff1a; 不难发现&#xff0c;设 后面得出该方程的通解&#xff1a; 这里要注意什么等于这个通解 --- z 又因为该曲线过点 所以可以求出c为3 该题虽然简单&#xff0c;但是要注意几个问题&#xff0c;该定…

轻松生成高质量用例的API接口工具

1、前言 随着自动化测试技术的普及&#xff0c;已经有很多公司或项目&#xff0c;多多少少都会进行自动化测试。 目前本部门的自动化测试以接口自动化为主&#xff0c;接口用例采用 Excel 进行维护&#xff0c;按照既定的接口用例编写规则&#xff0c;对于功能测试人员来说只…

vue使用img标签:src属性动态引入资源路径的方法

vue版本号&#xff1a;3.2.13 vue中<img src"" />标签静态引入图片资源 <template><!-- <router-view/> --><!-- 静态引入图片资源 --><img src"./assets/logo.png" alt""> </template><style la…

微软MFC技术中消息的定义

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来聊聊MFC技术中消息的定义。 本贴子首先介绍MFC消息的基本概念&#xff0c;理解消息的定义是学习使用MFC的基础。了解消息的驱动机制后&#xff0c;才能彻底明白MFC的运行机制。 首先来看什么是消息。…

VS code搭建JavaScript环境调用XHR实现post和get简单流程

一、下载NodeJS 下载node&#xff0c;最好到node官 https://nodejs.org/en/ 下载一个LTS&#xff08;Long Term Surport&#xff09;长期支持版本。 输入命令node -v 就可以看到node的版本了如果node安装包集成了npm(node package manage)&#xff0c;那我们输入命令npm -v 也…

11 S整数小波分解图像(matlab程序)

1.简述 学习目标&#xff1a; 非标准小波分解&#xff08;用S整数变换&#xff09; 小波分解过程&#xff1a;读取加入噪声后的图片后&#xff0c;数据即是高度*宽度个数据点。对此矩阵数据要做二维离散小波分解&#xff0c;二维小波变换和一维小波变换的区别从原理上来说就是…

stable diffusion webui 下载和使用civitai中的模型

1.网址 C站网址为&#xff1a;https://civitai.com/。注&#xff1a;这里需要科学上网 2.下载模型 1.选择想要的模型&#xff0c;点击【Download】按钮&#xff0c;这里演示【Deliberate】模型的下载和使用 2.将下载的模型&#xff0c;存放到【/models/Stable-diffusion】目…

基于圆弧搜索和最小似然圆估计的圆查找算法

在这里提出一种算法&#xff0c;其实是将两篇papers的想法的结合。没有什么创新点&#xff0c;只是做一下算法原理的记录&#xff0c;防止后面重新看代码的时候一头雾水。 算法的目的在于查找特定半径范围的圆&#xff0c;而不致力于查找所有的圆&#xff0c;当然它也支持查找所…

04约瑟夫环

约瑟夫问题 设编号为1&#xff0c;2&#xff0c;3……n的n个人围坐成一圈&#xff0c;约定编号为k(1<k<n)的人从1开始报数&#xff0c;数到m的那个人出列&#xff0c;它的下一位又从1开始报数&#xff0c;数到m的那个人又出列&#xff0c;以此类推&#xff0c;直到所有人…