This commit is contained in:
kkunkka
2025-10-18 10:50:08 +08:00
parent 2eb07a5211
commit 4e30268226
2 changed files with 82 additions and 0 deletions

View File

@@ -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;
}
}

View File

@@ -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<List<Integer>> 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<Integer>> list, int[] initial, int skip) {
var set = new HashSet<Integer>();
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<Integer>> list, int i, Set<Integer> set, boolean[] visited) {
set.add(i);
visited[i] = true;
for (Integer j : list.get(i)) {
if (!visited[j]) {
df(list, j, set, visited);
}
}
}
}