首页 > 其他分享 >Leetcode 1041. 困于环中的机器人

Leetcode 1041. 困于环中的机器人

时间:2024-09-22 12:03:23浏览次数:10  
标签:1041 机器人 环中 directions 循环 directIndex 方向 Leetcode 起点

1.题目基本信息

1.1.题目描述

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

  • 北方向 是y轴的正方向。

  • 南方向 是y轴的负方向。

  • 东方向 是x轴的正方向。

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

  • “G”:直走 1 个单位

  • “L”:左转 90 度

  • “R”:右转 90 度
    机器人按顺序执行指令 instructions,并一直重复它们。

只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。

1.2.题目地址

https://leetcode.cn/problems/robot-bounded-in-circle/description

2.解题方法

2.1.解题思路

模拟:只有一种情况,机器人无限循环下不能到达起点,即为假如开始是向北走,那么一次循环后,机器人不在起点并且方向还是向北。其余情况经过有限次循环,都能到达起点。

2.2.解题步骤

第一步,构建方向数组并初始化当前的方向和位置

第二步,遍历步骤,并更新当前的方向和位置

第三步,根据一次循环后的位置和方向判断无限循环下是否能到达起点

3.解题代码

Python代码

class Solution:
    # 模拟:只有一种情况,机器人无限循环下不能到达起点,即为假如开始是向北走,那么一次循环后,机器人不在起点并且方向还是向北。其余情况经过有限次循环,都能到达起点。
    def isRobotBounded(self, instructions: str) -> bool:
        # 第一步,构建方向数组并初始化当前的方向和位置
        directions=[[0,1],[-1,0],[0,-1],[1,0]]
        directIndex=0
        x,y=0,0
        # 第二步,遍历步骤,并更新当前的方向和位置
        for c in instructions:
            if c=="G":
                x+=directions[directIndex][0]
                y+=directions[directIndex][1]
            elif c=="L":
                directIndex=(directIndex+1)%4
            elif c=="R":
                directIndex=(directIndex-1)%4
        # 第三步,根据一次循环后的位置和方向判断无限循环下是否能到达起点
        return False if directIndex==0 and (x!=0 or y!=0) else True

C++代码

class Solution {
public:
    bool isRobotBounded(string instructions) {
        vector<vector<int>> directions={{0,1},{-1,0},{0,-1},{1,0}};
        int directIndex=0;
        int x=0,y=0;
        for(char c:instructions){
            if(c=='G'){
                x+=directions[directIndex][0];
                y+=directions[directIndex][1];
            }else if(c=='L'){
                directIndex=(directIndex+1)%4;
            }else if(c=='R'){
                directIndex=(directIndex-1+4)%4;
            }
        }
        return directIndex==0 && (x!=0 || y!=0) ? false : true;
    }
};

4.执行结果

在这里插入图片描述

标签:1041,机器人,环中,directions,循环,directIndex,方向,Leetcode,起点
From: https://www.cnblogs.com/geek0070/p/18425140

相关文章

  • Leetcode 2464. 有效分割中的最少子数组数目
    1.题目基本信息1.1.题目描述给定一个整数数组nums。如果要将整数数组nums拆分为子数组后是有效的,则必须满足:每个子数组的第一个和最后一个元素的最大公约数大于1,且nums的每个元素只属于一个子数组。返回nums的有效子数组拆分中的最少子数组数目。如果不能进......
  • 【LeetCode Hot 100】15. 三数之和
    题目描述回忆一下之前做过的两数之和,用的是哈希表存储已经遍历过的元素。但是本题要求返回值中不能有重复元素,因此需要去重,强行用哈希表的话,去重操作会很复杂。我们可以通过哪些方法来保证返回的数组中不包含重复的三元组?先将整个数组进行排序,可以保证答案数组中有\((a,b,c)\)......
  • leetcode 算法题目学习笔记 - 序号1
    1.两数之和https://leetcode.cn/problems/two-sum/简要说明:1.给定一个数组和一个数字2.要求找到数组中某两个元素,使得他们相加等于所给数字(将所给数字拆为数组中的某两个个元素)3.以数组形式返回两个下标否则返回空指针返回的下标没有顺序要求假设有唯一解,即只能在数组中......
  • Leetcode 406. 根据身高重建队列
    1.题目基本信息1.1.题目描述假设有打乱顺序的一群人站成一个队列,数组people表示队列中一些人的属性(不一定按顺序)。每个people[i]=[h_i,k_i]表示第i个人的身高为h_i,前面正好有k_i个身高大于或等于h_i的人。请你重新构造并返回输入数组people所表示的队列。返......
  • Leetcode 378. 有序矩阵中第 K 小的元素
    1.题目基本信息1.1.题目描述给你一个nxn矩阵matrix,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个不同的元素。你必须找到一个内存复杂度优于O(n^2)的解决方案。1.2.题目地址https://leetcode.cn/problem......
  • (LeetCode 热题 100) 199. 二叉树的右视图(递归、深度优先搜索dfs)
    199.二叉树的右视图思路:递归每次都优先右边子树,然后才是左子树。/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}......
  • [leetcode刷题]面试经典150题之3删除有序数组中的重复项(简单)
    题目 删除有序数组中的重复项给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你......
  • LeetCode 876
    题目:LeetCode876解法一:快慢指针注意:while循环条件,以链表(1,2,3,4,null)为例:当条件为fast!=null&&fast.next!=null时,若链表元素为偶数个,则返回中间的后一个节点(3)当条件为fast.next!=null&&fast.next.next!=null时,若链表元素为偶数个,则返回中间的前一个节......
  • [leetcode刷题]面试经典150题之5多数元素元素(简单)【附Boyer-Moore 投票算法(摩尔投票法
    很有意思的一个题,想了半天没想出来,最后发现两行代码就做出来了。写完后学习到还可以用Boyer-Moore投票算法,能减小空间复杂度,我把它写在后面,可以进一步学习。题目  多数元素给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊......
  • 【LeetCode Hot 100】11. 盛最多水的容器
    题目描述首先记录一下题目的解法。使用双指针记录容器的边界,从边界最大的容器开始,i位于最左侧,j位于最右侧。每次向中间移动高度较小的那个指针,并使用一个变量res记录容器最大的容积(即最终的答案)。//C++classSolution{public:intmaxArea(vector<int>&height){......