diff --git a/src/main/java/com/dota/arr/_3397/Solution.java b/src/main/java/com/dota/arr/_3397/Solution.java new file mode 100644 index 0000000..5485e6b --- /dev/null +++ b/src/main/java/com/dota/arr/_3397/Solution.java @@ -0,0 +1,23 @@ +package com.dota.arr._3397; + +import java.util.Arrays; + +class Solution { + public int maxDistinctElements(int[] nums, int k) { + Arrays.sort(nums); + var res = 1; + int n = nums.length; + nums[0] -= k; + int pre = nums[0]; + for (int i = 1; i < n; i++) { + int t = nums[i]; + t = Math.min(Math.max(pre + 1, t-k), t + k); + if(t>nums[i]) { + res++; + pre = t; + } + } + + return res; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/graph/_924/Solution.java b/src/main/java/com/dota/graph/_924/Solution.java new file mode 100644 index 0000000..c9a7da0 --- /dev/null +++ b/src/main/java/com/dota/graph/_924/Solution.java @@ -0,0 +1,59 @@ +package com.dota.graph._924; + +import java.util.*; + +class Solution { + public int minMalwareSpread(int[][] graph, int[] initial) { + int n = graph.length; + //建立图 + List> g = new ArrayList<>(); + for (int i = 0; i < n; i++) { + g.add(new ArrayList<>()); + } + + for (int i = 0; i < graph.length; i++) { + for (int j = i+1; j < graph[i].length; j++) { + if (graph[i][j] == 1) { + g.get(i).add(j); + g.get(j).add(i); + } + } + } + + //最小索引 + int res = initial[0]; + //最小感染数 + int min = Integer.MAX_VALUE; + Arrays.sort(initial); + for (int i : initial) { + var size = cal(n, g, initial, i); + if (size < min) { + res = i; + min = size; + } + } + + return res; + } + + int cal(int n, List> list, int[] initial, int skip) { + var set = new HashSet(); + var visited = new boolean[n]; + for (int i = 0; i < initial.length; i++) { + if (initial[i] == skip || visited[initial[i]]) continue; + df(list, initial[i], set, visited); + } + + return set.size(); + } + + void df(List> list, int i, Set set, boolean[] visited) { + set.add(i); + visited[i] = true; + for (Integer j : list.get(i)) { + if (!visited[j]) { + df(list, j, set, visited); + } + } + } +} \ No newline at end of file