其他分享
首页 > 其他分享> > leetcode 1496. 判断路径是否相交 一道map的使用,键为平面的点

leetcode 1496. 判断路径是否相交 一道map的使用,键为平面的点

作者:互联网

1496. 判断路径是否相交

难度简单21收藏分享切换为英文接收动态反馈

给你一个字符串 path,其中 path[i] 的值可以是 'N''S''E' 或者 'W',分别表示向北、向南、向东、向西移动一个单位。

机器人从二维平面上的原点 (0, 0) 处开始出发,按 path 所指示的路径行走。

如果路径在任何位置上出现相交的情况,也就是走到之前已经走过的位置,请返回 True ;否则,返回 False 。

 

示例 1:

输入:path = "NES"
输出:false 
解释:该路径没有在任何位置相交。

示例 2:

输入:path = "NESWW"
输出:true
解释:该路径经过原点两次。

 

提示:

通过次数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