Compare commits
2 Commits
2eb07a5211
...
main
Author | SHA1 | Date | |
---|---|---|---|
![]() |
42c979ec18 | ||
![]() |
4e30268226 |
23
src/main/java/com/dota/arr/_3397/Solution.java
Normal file
23
src/main/java/com/dota/arr/_3397/Solution.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
50
src/main/java/com/dota/graph/_2101/Solution.java
Normal file
50
src/main/java/com/dota/graph/_2101/Solution.java
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
package com.dota.graph._2101;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public int maximumDetonation(int[][] bombs) {
|
||||||
|
int n = bombs.length;
|
||||||
|
var g = new ArrayList<List<Integer>>();
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
g.add(new ArrayList<>());
|
||||||
|
;
|
||||||
|
}
|
||||||
|
int max = 1;
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = i + 1; j < n; j++) {
|
||||||
|
long a = bombs[i][0] - bombs[j][0];
|
||||||
|
long b = bombs[i][1] - bombs[j][1];
|
||||||
|
long c = bombs[i][2];
|
||||||
|
long d = bombs[j][2];
|
||||||
|
if (a * a + b * b <= c * c) {
|
||||||
|
g.get(i).add(j);
|
||||||
|
}
|
||||||
|
if (a * a + b * b <= d * d) {
|
||||||
|
g.get(j).add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
int size = df(g, new boolean[n], i);
|
||||||
|
if (size > max) {
|
||||||
|
max = size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
int df(List<List<Integer>> g, boolean[] visited, int x) {
|
||||||
|
visited[x] = true;
|
||||||
|
int size = 1;
|
||||||
|
for (Integer i : g.get(x)) {
|
||||||
|
if (!visited[i]) {
|
||||||
|
size += df(g, visited, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
}
|
59
src/main/java/com/dota/graph/_924/Solution.java
Normal file
59
src/main/java/com/dota/graph/_924/Solution.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user