LeetCode-657/1275/1041

news2024/12/24 9:11:42

1.机器人能否返回原点(657)

题目描述:

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

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

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

注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。
在这里插入图片描述
思路: 这题比较简单,只需要遍历移动字符串然后判断如果向左和向右,向上和向下的字符个数相等即可。

代码:

class Solution {
    public boolean judgeCircle(String moves) {
        int countR=0,countL=0,countU=0,countD=0;
        for(char c : moves.toCharArray()) {
            switch(c) {
                case 'R':
                    countR++;
                    break;
                case 'L':
                    countL++;
                    break;
                case 'U':
                    countU++;
                    break;
                case 'D':
                    countD++;
                    break;
            }
        }

        if(countD==countU && countR==countL) {
            return true;
        }
        return false;
    }
}

2.找出井字棋的获胜者(1275)

题目描述:

A 和 B 在一个 3 x 3 的网格上玩井字棋。

井字棋游戏的规则如下:

玩家轮流将棋子放在空方格 (" ") 上。
第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。
“X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。
只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。
如果所有方块都放满棋子(不为空),游戏也会结束。
游戏结束后,棋子无法再进行任何移动。
给你一个数组 moves,其中每个元素是大小为 2 的另一个数组(元素分别对应网格的行和列),它按照 A 和 B 的行动顺序(先 A 后 B)记录了两人各自的棋子位置。

如果游戏存在获胜者(A 或 B),就返回该游戏的获胜者;如果游戏以平局结束,则返回 “Draw”;如果仍会有行动(游戏未结束),则返回 “Pending”。

你可以假设 moves 都 有效(遵循井字棋规则),网格最初是空的,A 将先行动。
在这里插入图片描述
思路: 首先定义一个二位数组作为棋盘,然后根据A和B的下棋顺序以及给出的下棋位置的数组逐步向定义的二维数组也就是棋盘中添加字符,添加完成后判断两个对角线以及每一行每一列是否有成功的,如果有直接返回字符。如果没有并且棋盘装满了那么返回平局,如果没有并且棋盘未满就返回仍会有行动。

代码:

class Solution {
    public String tictactoe(int[][] moves) {
        String[][] board=new String[3][3];
        for(int i=0;i<moves.length;i++) {
            if(i%2==0) {
                board[moves[i][0]][moves[i][1]]="A";
            } else {
                board[moves[i][0]][moves[i][1]]="B";
            }

            
        }

        if(board[0][0]!=null&&board[1][1]==board[0][0]&board[0][0]==board[2][2]) {
            return board[0][0];
        } 

        if(board[1][1]!=null&&board[2][0]==board[1][1]&board[1][1]==board[0][2]) {
            return board[1][1];
        }
        for(int j=0;j<3;j++) {
            if(board[j][1]!=null&&board[j][0]==board[j][1]&&board[j][1]==board[j][2]) {
                return board[j][0];
            } else if(board[1][j]!=null&&board[0][j]==board[1][j]&&board[1][j]==board[2][j]) {
                return board[0][j];
            }
        }
        if(moves.length==9) {
            return "Draw";
        }

        return "Pending";


    }
}

3.困于环中的机器人(1041)

题目描述:

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

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

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

只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。
在这里插入图片描述
思路: 题目这里分两种情况。第一种就是遍历完instructions字符串中的操作后位置回到(0,0),对于这种情况先设置一个长度为2的数组表示坐标再设置一个整形变量direct表示方向(direct初始值为0表示北),然后设置一个for循环遍历字符,如果遍历到字符L就将direct+3,如果遍历到字符R将direct+1(这里这样操作是因为按照北->东->南->西这样的顺序来的),接着如果遍历到G字符就在相应方向加一,例如direct此时等于0,那么y轴坐标加一,这样遍历完成后如果坐标还是(0,0)就返回true。第二种情况就是一遍遍历回不到(0,0),需要遍历多遍,这种情况力扣里面的题解写的挺好的,这里贴出来。
在这里插入图片描述
由此可得当遍历完一遍后,方向direct不为0时后边遍历多遍就能回到原点。

代码:

class Solution {
    public boolean isRobotBounded(String instructions) {
        int x=0;
        int y=0;
        int direct=0;
        int[] arr=new int[2];
            for(char c:instructions.toCharArray()) {
            if(c=='G') {
                switch(direct%4) {
                    case 0:
                        arr[1]+=1;
                        break;
                    case 1:
                        arr[0]+=1;
                        break;
                    case 2:
                        arr[1]-=1;
                        break;
                    case 3:
                        arr[0]-=1;
                        break;
                }
            } else if(c=='L') {
                
                direct+=3;
            } else {
                
                direct+=1;
            }

        }
        
        if((arr[0]==0&&arr[1]==0) || direct%4!=0) {
            return true;
        } 
        
        
        return false;
    }
}

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

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

相关文章

Python办公自动化 – 自动化文本翻译和Oracle数据库操作

Python办公自动化 – 自动化文本翻译和Oracle数据库操作 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自…

python统计分析——箱线图(df.boxplot)

资料来源&#xff1a;用python学统计学&#xff0c;帮助文档 使用pd.dataframe.boxplot()函数绘制箱线图 import numpy as np import pandas as pd from matplotlib import pyplot as pltdfpd.DataFrame({type:[A,A,A,A,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B],value:[2,3,3,4,4,4…

门店管理系统驱动智慧零售升级

在当今数字化经济的大潮中&#xff0c;实体门店正在经历一场由内而外的深度变革。门店管理系统以其高效、便捷和全面的功能特性&#xff0c;为实体店提供了高效的运营解决方案。 门店管理系统拜托了传统零售业对本地化软件的依赖&#xff0c;它将复杂的信息技术转化为易于获取…

Redis性能大挑战:深入剖析缓存抖动现象及有效应对的战术指南

在实际应用中&#xff0c;你是否遇到过这样的情况&#xff0c;本来Redis运行的好好的&#xff0c;响应也挺正常&#xff0c;但突然就变慢了&#xff0c;响应时间增加了&#xff0c;这不仅会影响用户体验&#xff0c;还会牵连其他系统。 那如何排查Redis变慢的情况呢&#xff1f…

隧道自动化监测系统的主要产品和监测内容

一、背景 随着交通行业的不断发展&#xff0c;隧道作为交通基础设施的重要组成部分&#xff0c;其安全和稳定性对于保障人们的生命财产安全具有重要意义。隧道自动化监测系统作为一种先进的安全监测手段&#xff0c;能够实时监测隧道内部的各项参数&#xff0c;为隧道的安全运…

Kubernetes的动态pv

pv和pvc存储卷 存储卷: emptyDir:容器内部&#xff0c;随着pod销毁&#xff0c;emptyDir也会消失&#xff0c;不能做数据持久化 hostPath:持久化存储数据可以和节点上目录做挂载&#xff0c;pod被销毁了数据还在 NfS&#xff1a;一台机器&#xff0c;提供pod内容器所有的挂…

Elasticsearch 索引文档时create、index、update的区别【学习记录】

本文基于elasticsearch7.3.0版本。 一、思维导图 elasticsearch中create、index、update都可以实现插入功能&#xff0c;但是实现原理并不相同。 二、验证index和create 由上面思维导图可以清晰的看出create、index的大致区别&#xff0c;下面我们来验证下思维导图中的场景&…

2023年山东省职业院校技能大赛高职组信息安全管理与评估 理论题(正式赛)

2023年山东省职业院校技能大赛高职组信息安全管理与评估 理论题 理论技能与职业素养&#xff08;100分&#xff09; 2023年山东省职业院校技能大赛高职组信息安全管理与评估 理论题 【注意事项】 Geek极安云科专注技能竞赛技术提升&#xff0c;基于各大赛项提供全面的系统性…

大数据系列之:腾讯云服务器性能和价格比较

大数据系列之&#xff1a;腾讯云服务器性能和价格比较 一、磁盘性能和价格比较二、高性能云硬盘三、ssd云硬盘四、极速型ssd云硬盘五、增强型ssd云硬盘六、查看腾讯云服务器价格 一、磁盘性能和价格比较 磁盘名称高性能ssd云硬盘极速型ssd云硬盘增强型ssd云硬盘规格500g 5800 …

九州金榜|提高孩子认知,让问题自动消失

哈佛大学教授桑斯坦曾提出一个概念&#xff0c;叫做“信息茧房”。 意思是说&#xff1a;人们关注的信息领域&#xff0c;会习惯性地被自己的思想所引导&#xff0c;当你长时间接受单一观点时&#xff0c;就像蚕茧一样把自己越包越紧&#xff0c;越来越封闭。 走不出认知逻辑…

爬虫01-爬虫原理以及爬虫前期准备工作

文章目录 1 爬虫基本原理什么是爬虫爬虫功能详解爬虫基本流程两个概念&#xff1a;request和response 2 一些问题爬虫能抓取什么样的数据&#xff1f;抓取的数据怎么提取部分内容&#xff1f;数据解析方式。为什么我爬虫抓取的数据和浏览器看到的不一样怎样解决JavaScript渲染的…

数字档案安全与高效管理的先锋——亚信安慧AntDB数据库

档案工作在维护历史真实面貌、保障人民利益方面具有至关重要的作用。随着社会的发展&#xff0c;数字化转型成为档案管理领域的不可逆趋势。数字档案的存储和传输已经成为档案工作的重要组成部分&#xff0c;然而&#xff0c;这也伴随着一系列的挑战&#xff0c;其中安全风险是…

window11后台服务优化记录

这里:\WINDOWS\xxx\svchost.exe -k netsvcs -p 信号聚合器服务&#xff0c;用于根据时间、网络、地理位置、蓝牙和 CDF 因素评估信号。支持的功能包括设备解锁、动态锁定和动态 MDM 策略 参考&#xff1a; 优化参考v1

时间差异导致数据缺失,如何调整Grafana时间与Prometheus保持同步?

Grafana时间如何调快或调慢&#xff1f; 在k8s环境中&#xff0c;常使用prometheusgrafana做监控组件&#xff0c;prometheus负责采集、存储数据&#xff0c;grafana负责监控数据的可视化。 在实际的使用中&#xff0c;有时会遇到这样的问题&#xff0c;k8s集群中的时间比真实…

Zabbix6.4 监控系统 密码忘记怎么办

Zabbix6.4 监控系统 密码忘记怎么办&#xff1f; 如下图 本次主要介绍在Zabbix6.4中重置用户密码的步骤。 步骤 如果您忘记了Zabbix密码并且无法登录&#xff0c;请向Zabbix管理员求助。 超级管理员用户可以在用户配置表单中更改所有用户的密码。 如果超级用户忘记了密码&a…

C++指针小练习

双色球统计1-33个数字出现的次数(很详细) 做这个题一定要注意审题:题目要求是统计1-33个数字出现的次数,而不是前六个数字出现的次数 算法设计: ①:用一个数组p1来保存每一行的数据,再用一个数组p2来遍历1-33个数字,因为是要统计这33个数字出现的次数所以将数组初始化为0, ②…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑦

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷7 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷7 模块一 …

建模软件Rhinoceros mac介绍说明

Rhinoceros mac是一款3D设计软件“犀牛”&#xff0c;在当今众多三维建模软件中&#xff0c;Rhinoceros 版因为其体积小、功能强大、对硬件要求低而广受欢迎&#xff0c;对于专业的3D设计人员来说它是一款不错的3D建模软件&#xff0c;Rhinoceros Mac中文版能轻易整合3DS MAX与…

关于对象存储的若干事

引言 最近在阅读鸣嵩的一篇文章&#xff0c;数据库的下一场革命&#xff1a;S3 延迟已降至原先的 10%&#xff0c;云数据库架构该进化了 收获很多&#xff0c;过去时间也基于对象存储做过一些功能实现&#xff0c;特记录下。关于鸣嵩&#xff1a; 曹伟&#xff0c;花名鸣嵩&am…

Python爬虫—requests模块简单应用

Python爬虫—requests模块简介 requests的作用与安装 作用&#xff1a;发送网络请求&#xff0c;返回响应数据 安装&#xff1a;pip install requests requests模块发送简单的get请求、获取响应 需求&#xff1a;通过requests向百度首页发送请求&#xff0c;获取百度首页的…