双周赛97
This commit is contained in:
parent
1ba2cbb345
commit
fe1d8a97c4
86
src/main/java/contest/y2023/BW97.java
Normal file
86
src/main/java/contest/y2023/BW97.java
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
package contest.y2023;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class BW97 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
BW97 solution = new BW97();
|
||||||
|
System.out.println(solution.maximizeWin(new int[]{1, 1, 2, 2, 3, 3, 5}, 2));
|
||||||
|
// System.out.println(solution.maximizeWin(new int[]{1, 2, 3, 4}, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int maximizeWin(int[] prizePositions, int k) {
|
||||||
|
int sum1 = 0;
|
||||||
|
int sum2 = 0;
|
||||||
|
int sum = 1;
|
||||||
|
int left = 0;
|
||||||
|
for (int i = 1; i < prizePositions.length; i++) {
|
||||||
|
if (prizePositions[i] - prizePositions[left] <= k) {
|
||||||
|
sum += 1;
|
||||||
|
} else {
|
||||||
|
if (sum >= sum2) {
|
||||||
|
if (sum >= sum1) {
|
||||||
|
sum2 = sum1;
|
||||||
|
sum1 = sum;
|
||||||
|
} else {
|
||||||
|
sum2 = sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
left++;
|
||||||
|
while (left < prizePositions.length && prizePositions[i] - prizePositions[left] > k) {
|
||||||
|
sum -= 1;
|
||||||
|
left++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sum >= sum2) {
|
||||||
|
if (sum >= sum1) {
|
||||||
|
sum2 = sum1;
|
||||||
|
sum1 = sum;
|
||||||
|
} else {
|
||||||
|
sum2 = sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sum1 + sum2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int maxCount(int[] banned, int n, int maxSum) {
|
||||||
|
Arrays.sort(banned);
|
||||||
|
int sum = 0;
|
||||||
|
int cnt = 0;
|
||||||
|
int index = 0;
|
||||||
|
for (int i = 1; i <= n; i++) {
|
||||||
|
if (index >= banned.length || i < banned[index]) {
|
||||||
|
sum += i;
|
||||||
|
if (sum > maxSum) {
|
||||||
|
return cnt;
|
||||||
|
} else {
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
while (index > 0 && index < banned.length && banned[index] == banned[index - 1]) {
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] separateDigits(int[] nums) {
|
||||||
|
List<String> list = new ArrayList<>();
|
||||||
|
for (int i = 0; i < nums.length; i++) {
|
||||||
|
String str = "" + nums[i];
|
||||||
|
for (int j = 0; j < str.length(); j++) {
|
||||||
|
list.add("" + str.charAt(j));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int[] res = new int[list.size()];
|
||||||
|
for (int i = 0; i < list.size(); i++) {
|
||||||
|
res[i] = Integer.parseInt(list.get(i));
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user