874 LeetCode 模拟行走机器人
作者:互联网
题目描述:
思路:
1、使用哈希表记录障碍物的坐标
2、使用字符串记录机器人走的方向
3、最后求出机器人所在位置的最大距离
代码如下:
class Solution {
public:
int robotSim(vector<int>& commands, vector<vector<int>>& obstacles) {
vector<int>res;
res.push_back(0);
res.push_back(0);
map<vector<int>,int>obs;
for(int i=0;i<obstacles.size();i++){
obs[obstacles[i]]++;
}
int sum=0;
string cur="up";
for(int i=0;i<commands.size();i++){
if(commands[i]==-1){
if(cur=="up")
cur="right";
else if(cur=="right")
cur="down";
else if(cur=="down")
cur="left";
else if(cur=="left")
cur="up";
}
if(commands[i]==-2){
if(cur=="up")
cur="left";
else if(cur=="left")
cur="down";
else if(cur=="down")
cur="right";
else if(cur=="right")
cur="up";
}
if(commands[i]>=1&&commands[i]<=9){
if(cur=="up")
for(int j=1;j<=commands[i];j++){
res[1]+=1;
if(obs[res]>0){
res[1]-=1;
break;}
}
if(cur=="left")
for(int j=1;j<=commands[i];j++){
res[0]+=-1;
if(obs[res]>0){
res[0]+=1;
break;}
}
if(cur=="down")
for(int j=1;j<=commands[i];j++){
res[1]+=-1;
if(obs[res]>0){
res[1]+=1;
break;}
}
if(cur=="right")
for(int j=1;j<=commands[i];j++){
res[0]+=1;
if(obs[res]>0){
res[0]-=1;
break;}
}
}
sum=max(sum,res[0]*res[0]+res[1]*res[1]);
}
return sum;
}
};
peachzy
发布了133 篇原创文章 · 获赞 0 · 访问量 1123
私信
关注
标签:cur,int,res,874,机器人,j0,break,sum,LeetCode 来源: https://blog.csdn.net/peachzy/article/details/104495264