• leetcode 874. Walking Robot Simulation


    874. Walking Robot Simulation

    https://www.cnblogs.com/grandyang/p/10800993.html

    每走一步(不是没走commands里的一个数字)计算到原点的距离,每走一步都可能遇到障碍物,需要将障碍物的坐标进行存储,以判断是否停止行走。

    左转90度,右转90度转换成在x、y的坐标变换上来。左转前进一个index,右转前进一个index,对4取余确保不越界

    不知道为什么用unordered_set就编译出错。

    class Solution {
    public:
        int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {
            int x = 0,y = 0,res = 0,index = 0;
            set<pair<int,int> > s;
            for(int i = 0;i < obstacles.size();i++)
                s.insert({obstacles[i][0],obstacles[i][1]});
            vector<int> x_move{0,1,0,-1},y_move{1,0,-1,0};
            for(int command : commands){
                if(command == -1)
                    index = (index + 1)%4;
                else if(command == -2)
                    index = (index - 1 + 4)%4;
                else{
                    while(command-- > 0 && !s.count(make_pair(x + x_move[index],y + y_move[index]))){
                        x += x_move[index];
                        y += y_move[index];
                    }
                }
                res = max(res,x*x + y*y);    
            }
            return res;
        }
    };
  • 相关阅读:
    Java——数组
    Java——控制循环结构
    脏检查
    Session跟SessionFactory的线程安全与非安全
    脏检查and刷新机构
    oracle函数
    多线程下单列模式
    多线程
    线程同步
    文件上传功能的实现
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10841339.html
Copyright © 2020-2023  润新知