主題の説明:
アイデア:
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;
}
};