
本文共 2770 字,大约阅读时间需要 9 分钟。
������
���������������������������������������������������������(���������)"
������������������������������stones������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
���������������������������������������������������������(x,y)������������������������������x������������x������y���������������y������������������������������������������������������������������������������������������������������(x,y)���������������������x������y������������������������������������������������������������������������������������������������������������������������������������������������������������
������stones���������������������������������������������������������������������������������������������0���0���������0���������������������������������������������������������x���y������������������0~10^4���������������������������+10001������������10001���������������������������������������������������������������x���������x+10001������������������������y���������������������
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
Java���������������������������Java���c++���������������������������Java������������������������������������������������������
class Solution { int parent[] = new int[20005]; int vis[] = new int[20005]; public int removeStones(int[][] stones) { int ans = 0; for (int i = 0; i < 20005; i++){ parent[i] = i; vis[i] = 0; } for (int[] stone : stones) { //(x,y)������������������������x���������������������������������y��� //���������������������������(x,y)������������������x������������y��� //������������������������������������������������������������������������ //������+10001��������������������������������������������������������� //���������������x+10001������������������������y��������������������� union(stone[0] + 10001, stone[1]); vis[stone[0] + 10001] = 1; vis[stone[1]] = 1; } for(int i = 0; i < 20005; i++) { if(vis[i] == 1 && parent[i] == i) ans++; } return stones.length - ans; } public void union(int x, int y) { int fx = find(x); int fy = find(y); if (fx != fy) parent[fy] = fx; } public int find(int x) { while (parent[x] != x) x = parent[x]; return x; }}
发表评论
最新留言
关于作者
