美文网首页
959. 由斜杠划分区域(并查集)

959. 由斜杠划分区域(并查集)

作者: 来到了没有知识的荒原 | 来源:发表于2021-01-27 00:14 被阅读0次

959. 由斜杠划分区域

没想到这也能并查集

class Solution {
public:
    int setcnt;
    vector<int>p;
    void init(int n){
        p.resize(4*n*n);
        setcnt=p.size();
        for(int i=0;i<p.size();i++)p[i]=i;
    }
    int find(int x){
        if(p[x]!=x)p[x]=find(p[x]);
        return p[x];
    }
    void merge(int a,int b){
        a=find(a),b=find(b);
        if(a>b) swap(a,b);
        if(a!=b) p[b]=a,setcnt--;
    }
    int dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};

//   0
// 1   2
//   3   

    int regionsBySlashes(vector<string>& grid) {
        int n=grid.size();
        init(n);
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                int cur=(i*n+j)*4;
                char c=grid[i][j];
                
                for(int k=0;k<4;k++){
                    int a=i+dx[k],b=j+dy[k];
                    if(a>=0 && a<n && b>=0 && b<n){
                        int c2=(a*n+b)*4;
                        merge(cur+k,c2+3-k);
                    }
                }
                if(c==' ')merge(cur,cur+1),merge(cur,cur+2),merge(cur,cur+3);
                else if(c=='/')merge(cur,cur+1),merge(cur+2,cur+3);
                else if(c=='\\')merge(cur,cur+2),merge(cur+1,cur+3);
            }
        }

        return setcnt;

    }
};

相关文章

  • 959. 由斜杠划分区域【并查集】

    题目 在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。...

  • 959. 由斜杠划分区域(并查集)

    959. 由斜杠划分区域[https://leetcode-cn.com/problems/regions-cut...

  • 959.由斜杠划分区域

    这道题一开始看,完全没有思路 后来看了答案用了第200题岛屿数量的方法,深度优先遍历,比较好理解。广度优先遍历相比...

  • 959. 由斜杠划分区域(Python)

    难度:★★★☆☆类型:几何方法:并查集 题目 力扣链接请移步本题传送门[https://leetcode-cn.c...

  • 深入理解并查集

    并查集是一种树形结构,它是由并查集算法进行维护的。而并查集算法(Union-find-algorithm),顾名思...

  • markdown学习

    #并查集 ##并查集的定义 ##并查集的操作

  • 算法模板(四)并查集

    并查集 路径压缩并查集

  • 并查集入门使用

    本文参考自《算法笔记》并查集篇 并查集的定义 什么是并查集?并查集可以理解为是一种维护数据集合的结构。名字中并查集...

  • 并查集练习

    并查集 参考《算法笔记》 三要素:并,查,集。 并差集与一个算法有关,kruskal算法,就可通过并查集实现。 1...

  • 并查集

    并查集 并查集是什么 并查集是一种用来管理元素分组情况的数据结构,并查集可以高效地进行如下操作: 查询元素a和元素...

网友评论

      本文标题:959. 由斜杠划分区域(并查集)

      本文链接:https://www.haomeiwen.com/subject/iofwzktx.html