leetcode 1496. 判断路径是否相交 一道map的使用,键为平面的点
作者:互联网
难度简单21收藏分享切换为英文接收动态反馈
给你一个字符串 path
,其中 path[i]
的值可以是 'N'
、'S'
、'E'
或者 'W'
,分别表示向北、向南、向东、向西移动一个单位。
机器人从二维平面上的原点 (0, 0)
处开始出发,按 path
所指示的路径行走。
如果路径在任何位置上出现相交的情况,也就是走到之前已经走过的位置,请返回 True
;否则,返回 False
。
示例 1:
输入:path = "NES" 输出:false 解释:该路径没有在任何位置相交。
示例 2:
输入:path = "NESWW" 输出:true 解释:该路径经过原点两次。
提示:
1 <= path.length <= 10^4
path
仅由{'N', 'S', 'E', 'W}
中的字符组成
通过次数8,076提交次数14,881
class Solution {
public:
bool isPathCrossing(string path) {
int x = 0, y = 0;
map<pair<int, int>, int> mp;
mp[{0,0}] = 1;
for(auto& c: path) {
if(c == 'N') y++;
else if(c == 'S') y--;
else if(c == 'E') x++;
else if(c == 'W') x--;
if(mp[{x, y}]) return true;
else mp[{x,y}] = 1;
}
return false;
}
};
把经过的点放在mp里面,每次生成一个点,就判断是否经过,不经过加入,经过则return.
标签:map,return,路径,相交,else,键为,mp,1496,path 来源: https://blog.csdn.net/weixin_41579872/article/details/113095860