leetcode10-困于环中的机器人

题目链接:

https://leetcode.cn/problems/robot-bounded-in-circle/description/?envType=study-plan-v2&envId=programming-skills

思路:

首先,题目要寻找的是成环的情况。

1.如果经历一次指令后的方向仍为北方,要使得机器人循环困住,必须让机器人回到原点

2.如果经历一次指令后的方向不是北方,那么最多重复四次又会回到面朝北方,这种情况下机器人虽然不会回到原点,但是也一直都被环困住。

代码采用了常用的二维平面的向量坐标写法

代码:

java 复制代码
class Solution {
    public boolean isRobotBounded(String instructions) {
        //记录 0 1 2 3
        //    北东南西 坐标向量写法
        int [][] res = {
            {0,1},{1,0},{0,-1},{-1,0}
        };
        int n = instructions.length();
        int x = 0,y = 0;//记录坐标
        int faceDirect = 0;//记录朝向 一开始为0 表示指向北
        for(int i = 0;i<n;i++) {
            //直走命令
            if(instructions.charAt(i)=='G') {
                x+=res[faceDirect][0];
                y+=res[faceDirect][1];
            }
            //左转命令
            else if(instructions.charAt(i)=='L') {
                faceDirect = (faceDirect+3)%4;
                
            }
            //右转命令
            else if(instructions.charAt(i)=='R') {
                faceDirect = (faceDirect+1)%4;
            }
        }
        if( (x==0 && y==0)|| faceDirect!=0)
            return true;
        return false;
    }
}
相关推荐
程序员小假17 小时前
我们来说一下 MySQL 的慢查询日志
java·后端
独自破碎E17 小时前
Java是怎么实现跨平台的?
java·开发语言
To Be Clean Coder18 小时前
【Spring源码】从源码倒看Spring用法(二)
java·后端·spring
xdpcxq102918 小时前
风控场景下超高并发频次计算服务
java·服务器·网络
想用offer打牌18 小时前
你真的懂Thread.currentThread().interrupt()吗?
java·后端·架构
橘色的狸花猫18 小时前
简历与岗位要求相似度分析系统
java·nlp
独自破碎E18 小时前
Leetcode1438绝对值不超过限制的最长连续子数组
java·开发语言·算法
用户917439653918 小时前
Elasticsearch Percolate Query使用优化案例-从2000到500ms
java·大数据·elasticsearch
yaoxin52112319 小时前
279. Java Stream API - Stream 拼接的两种方式:concat() vs flatMap()
java·开发语言
坚持学习前端日记19 小时前
2025年的个人和学习年度总结以及未来期望
java·学习·程序人生·职场和发展·创业创新