Skip to content

Commit 029085a

Browse files
committed
Fixed sonar
1 parent 9637679 commit 029085a

File tree

3 files changed

+76
-38
lines changed

3 files changed

+76
-38
lines changed

src/main/java/g3501_3600/s3542_minimum_operations_to_convert_all_elements_to_zero/Solution.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
// #Medium #2025_05_11_Time_162_ms_(100.00%)_Space_61.48_MB_(100.00%)
44

5-
import java.util.Stack;
5+
import java.util.ArrayDeque;
6+
import java.util.Deque;
67

78
public class Solution {
89
public int minOperations(int[] nums) {
9-
Stack<Integer> stack = new Stack<>();
10+
Deque<Integer> stack = new ArrayDeque<>();
1011
stack.push(0);
1112
int res = 0;
1213
for (int a : nums) {

src/main/java/g3501_3600/s3544_subtree_inversion_sum/Solution.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ private long getTotalSum(int p, int cur) {
1919
}
2020
res += getTotalSum(cur, c);
2121
}
22-
return totalSum[cur] = res;
22+
totalSum[cur] = res;
23+
return res;
2324
}
2425

2526
private void add(long[][] a, long[][] b) {

src/main/java/g3501_3600/s3547_maximum_sum_of_edge_values_in_a_graph/Solution.java

Lines changed: 71 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,43 @@ public class Solution {
1212
private int[] s;
1313

1414
public long maxScore(int n, int[][] edges) {
15+
initializeArrays(n);
16+
processEdges(edges);
17+
List<Integer> circles = new ArrayList<>();
18+
List<Integer> chains = new ArrayList<>();
19+
findParentsAndUpdateCircles();
20+
collectCirclesAndChains(circles, chains);
21+
Collections.sort(circles);
22+
chains.sort((a, b) -> Integer.compare(b, a));
23+
return calculateScore(n, circles, chains);
24+
}
25+
26+
private void initializeArrays(int n) {
1527
p = new int[n];
1628
c = new boolean[n];
1729
s = new int[n];
1830
for (int i = 0; i < n; i++) {
1931
p[i] = i;
2032
s[i] = 1;
2133
}
34+
}
35+
36+
private void processEdges(int[][] edges) {
2237
for (int[] ele : edges) {
2338
join(ele[0], ele[1]);
2439
}
25-
List<Integer> circles = new ArrayList<>();
26-
List<Integer> chains = new ArrayList<>();
40+
}
41+
42+
private void findParentsAndUpdateCircles() {
2743
for (int i = 0; i < p.length; i++) {
2844
p[i] = findParent(i);
2945
if (c[i]) {
3046
c[p[i]] = true;
3147
}
3248
}
49+
}
50+
51+
private void collectCirclesAndChains(List<Integer> circles, List<Integer> chains) {
3352
for (int i = 0; i < p.length; i++) {
3453
if (p[i] == i) {
3554
int size = s[i];
@@ -40,58 +59,75 @@ public long maxScore(int n, int[][] edges) {
4059
}
4160
}
4261
}
43-
Collections.sort(circles);
44-
chains.sort((a, b) -> Integer.compare(b, a));
62+
}
63+
64+
private long calculateScore(int n, List<Integer> circles, List<Integer> chains) {
4565
long ret = 0;
4666
int start = n;
67+
ret += processCircles(circles, start);
68+
start = n - getTotalCircleSize(circles);
69+
ret += processChains(chains, start);
70+
return ret;
71+
}
72+
73+
private int getTotalCircleSize(List<Integer> circles) {
74+
return circles.stream().mapToInt(Integer::intValue).sum();
75+
}
76+
77+
private long processCircles(List<Integer> circles, int start) {
78+
long ret = 0;
4779
for (int size : circles) {
4880
if (size == 1) {
4981
continue;
5082
}
51-
int[] temp = new int[size];
52-
int ptr1 = 0;
53-
int ptr2 = size - 1;
54-
int curStart = start - size + 1;
55-
for (int i = 0; i < size; i++) {
56-
if (i % 2 == 0) {
57-
temp[ptr1++] = curStart + i;
58-
} else {
59-
temp[ptr2--] = curStart + i;
60-
}
61-
}
62-
long pro = 0;
63-
for (int i = 1; i < size; i++) {
64-
pro += (long) temp[i] * temp[i - 1];
65-
}
66-
pro += (long) temp[0] * temp[size - 1];
83+
int[] temp = createTempArray(size, start);
84+
long pro = calculateProduct(temp, true);
6785
ret += pro;
6886
start = start - size;
6987
}
88+
return ret;
89+
}
90+
91+
private long processChains(List<Integer> chains, int start) {
92+
long ret = 0;
7093
for (int size : chains) {
7194
if (size == 1) {
7295
continue;
7396
}
74-
int[] temp = new int[size];
75-
int ptr1 = 0;
76-
int ptr2 = size - 1;
77-
int curStart = start - size + 1;
78-
for (int i = 0; i < size; i++) {
79-
if (i % 2 == 0) {
80-
temp[ptr1++] = curStart + i;
81-
} else {
82-
temp[ptr2--] = curStart + i;
83-
}
84-
}
85-
long pro = 0;
86-
for (int i = 1; i < size; i++) {
87-
pro += (long) temp[i] * temp[i - 1];
88-
}
97+
int[] temp = createTempArray(size, start);
98+
long pro = calculateProduct(temp, false);
8999
ret += pro;
90100
start = start - size;
91101
}
92102
return ret;
93103
}
94104

105+
private int[] createTempArray(int size, int start) {
106+
int[] temp = new int[size];
107+
int ptr1 = 0;
108+
int ptr2 = size - 1;
109+
int curStart = start - size + 1;
110+
for (int i = 0; i < size; i++) {
111+
if (i % 2 == 0) {
112+
temp[ptr1++] = curStart + i;
113+
} else {
114+
temp[ptr2--] = curStart + i;
115+
}
116+
}
117+
return temp;
118+
}
119+
120+
private long calculateProduct(int[] temp, boolean isCircle) {
121+
long pro = 0;
122+
for (int i = 1; i < temp.length; i++) {
123+
pro += (long) temp[i] * temp[i - 1];
124+
}
125+
if (isCircle) {
126+
pro += (long) temp[0] * temp[temp.length - 1];
127+
}
128+
return pro;
129+
}
130+
95131
private int findParent(int x) {
96132
if (p[x] != x) {
97133
p[x] = findParent(p[x]);

0 commit comments

Comments
 (0)