package question;public class Question959 {public static void main(String[] args) {System.out.println(new Question959().regionsBySlashes(new String[]{"/\\","\\/"}));}public int regionsBySlashes(String[] grid) {int n = grid.length + 1;UnionFind unionFind = new UnionFind(n);int res = 1;for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[i].length(); j++) {char c = grid[i].charAt(j);int x = 0, y = 0;if (c == '\\') {x = i * n + j;y = (i + 1) * n + j + 1;} else if (c == '/') {x = i * n + j + 1;y = (i + 1) * n + j;} else {continue;}if (unionFind.merge(x, y)) {res++;}}}return res;}private class UnionFind {int[] p;public UnionFind(int n) {this.p = new int[n * n];for (int i = 1; i < n - 1; i++) {for (int j = 1; j < n - 1; j++) {p[i * n + j] = i * n + j;}}}public int find(int x) {if (p[x] == 0 || p[x] == x) return p[x];p[x] = find(p[x]);return p[x];}public boolean merge(int x, int y) {x = find(x);y = find(y);if (x == y) return true;if (y == 0) p[x] = y;else p[y] = x;return false;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。