modify code

master
algorithmzuo 2 years ago
parent 5873ab2c0a
commit 5cd4837bef

@ -1,6 +1,5 @@
package 03.mca_08; package 03.mca_08;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
// 来自字节飞书团队 // 来自字节飞书团队
@ -14,46 +13,45 @@ import java.util.HashMap;
public class Code04_SameTeams { public class Code04_SameTeams {
public static class TrieNode { public static class TrieNode {
public ArrayList<Integer> indices;
public int pass;
public HashMap<Integer, TrieNode> nexts; public HashMap<Integer, TrieNode> nexts;
public TrieNode() { public TrieNode() {
indices = new ArrayList<>(); pass = 0;
nexts = new HashMap<>(); nexts = new HashMap<>();
} }
} }
public static int[] sameTeamsArray(int[][] bs, int[][] as) { public static int[] sameTeamsArray(int[][] bs, int[][] as) {
int m = bs.length;
TrieNode root = new TrieNode(); TrieNode root = new TrieNode();
TrieNode cur = null; TrieNode cur = null;
for (int i = 0; i < m; i++) { for (int i = 0; i < as.length; i++) {
int k = bs[i].length;
cur = root; cur = root;
for (int j = 1; j < k; j++) { for (int j = 1; j < as[i].length; j++) {
int diff = bs[i][j] - bs[i][j - 1]; int diff = as[i][j] - as[i][j - 1];
if (!cur.nexts.containsKey(diff)) { if (!cur.nexts.containsKey(diff)) {
cur.nexts.put(diff, new TrieNode()); cur.nexts.put(diff, new TrieNode());
} }
cur = cur.nexts.get(diff); cur = cur.nexts.get(diff);
cur.pass++;
} }
cur.indices.add(i);
} }
int[] ans = new int[m]; int[] ans = new int[bs.length];
int n = as.length; for (int i = 0; i < bs.length; i++) {
for (int i = 0; i < n; i++) {
int k = as[i].length;
cur = root; cur = root;
for (int j = 1; j < k; j++) { for (int j = 1; j < bs[i].length; j++) {
int diff = as[i][j] - as[i][j - 1]; int diff = bs[i][j] - bs[i][j - 1];
if (!cur.nexts.containsKey(diff)) { if (!cur.nexts.containsKey(diff)) {
cur = null;
break; break;
} }
cur = cur.nexts.get(diff); cur = cur.nexts.get(diff);
for (int index : cur.indices) { }
ans[index]++; if (cur != null) {
} ans[i] = cur.pass;
} }
} }
return ans; return ans;

@ -1,6 +1,5 @@
package class_2022_03_2_week; package class_2022_03_2_week;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
// 来自字节飞书团队 // 来自字节飞书团队
@ -14,46 +13,45 @@ import java.util.HashMap;
public class Code04_SameTeams { public class Code04_SameTeams {
public static class TrieNode { public static class TrieNode {
public ArrayList<Integer> indices;
public int pass;
public HashMap<Integer, TrieNode> nexts; public HashMap<Integer, TrieNode> nexts;
public TrieNode() { public TrieNode() {
indices = new ArrayList<>(); pass = 0;
nexts = new HashMap<>(); nexts = new HashMap<>();
} }
} }
public static int[] sameTeamsArray(int[][] bs, int[][] as) { public static int[] sameTeamsArray(int[][] bs, int[][] as) {
int m = bs.length;
TrieNode root = new TrieNode(); TrieNode root = new TrieNode();
TrieNode cur = null; TrieNode cur = null;
for (int i = 0; i < m; i++) { for (int i = 0; i < as.length; i++) {
int k = bs[i].length;
cur = root; cur = root;
for (int j = 1; j < k; j++) { for (int j = 1; j < as[i].length; j++) {
int diff = bs[i][j] - bs[i][j - 1]; int diff = as[i][j] - as[i][j - 1];
if (!cur.nexts.containsKey(diff)) { if (!cur.nexts.containsKey(diff)) {
cur.nexts.put(diff, new TrieNode()); cur.nexts.put(diff, new TrieNode());
} }
cur = cur.nexts.get(diff); cur = cur.nexts.get(diff);
cur.pass++;
} }
cur.indices.add(i);
} }
int[] ans = new int[m]; int[] ans = new int[bs.length];
int n = as.length; for (int i = 0; i < bs.length; i++) {
for (int i = 0; i < n; i++) {
int k = as[i].length;
cur = root; cur = root;
for (int j = 1; j < k; j++) { for (int j = 1; j < bs[i].length; j++) {
int diff = as[i][j] - as[i][j - 1]; int diff = bs[i][j] - bs[i][j - 1];
if (!cur.nexts.containsKey(diff)) { if (!cur.nexts.containsKey(diff)) {
cur = null;
break; break;
} }
cur = cur.nexts.get(diff); cur = cur.nexts.get(diff);
for (int index : cur.indices) { }
ans[index]++; if (cur != null) {
} ans[i] = cur.pass;
} }
} }
return ans; return ans;

Loading…
Cancel
Save