周赛288
This commit is contained in:
parent
ce5efc13ce
commit
e0cb694765
99
src/main/java/contest/y2022/m4/Solution288.java
Normal file
99
src/main/java/contest/y2022/m4/Solution288.java
Normal file
@ -0,0 +1,99 @@
|
||||
package contest.y2022.m4;
|
||||
|
||||
import javax.management.Query;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: Administrator
|
||||
* @date: 2021/8/22-10:29
|
||||
*/
|
||||
public class Solution288 {
|
||||
public static void main(String[] args) {
|
||||
Solution288 solution = new Solution288();
|
||||
// solution.minimizeResult("247+38");
|
||||
solution.maximumProduct(new int[]{7, 8, 9}, 9);
|
||||
}
|
||||
|
||||
public int largestInteger(int num) {
|
||||
List<Integer> list1 = new ArrayList<>();
|
||||
List<Integer> list2 = new ArrayList<>();
|
||||
String s = String.valueOf(num);
|
||||
int[] nums = new int[s.length()];
|
||||
int index = 0;
|
||||
for (char ch : s.toCharArray()) {
|
||||
if ((ch - '0') % 2 == 0) {
|
||||
list2.add(ch - '0');
|
||||
} else {
|
||||
list1.add(ch - '0');
|
||||
nums[index] = 1;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
Collections.sort(list1);
|
||||
Collections.sort(list2);
|
||||
int i1 = list1.size() - 1;
|
||||
int i2 = list2.size() - 1;
|
||||
num = 0;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
if (nums[i] == 0) {
|
||||
num = num * 10 + list2.get(i2);
|
||||
i2--;
|
||||
} else {
|
||||
num = num * 10 + list1.get(i1);
|
||||
i1--;
|
||||
}
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
|
||||
public String minimizeResult(String expression) {
|
||||
String[] strs = expression.split("\\+");
|
||||
int sum = Integer.MAX_VALUE;
|
||||
String str = "";
|
||||
for (int i = 0; i < strs[0].length(); i++) {
|
||||
int num00 = i > 0 ? Integer.valueOf(strs[0].substring(0, i)) : 1;
|
||||
int num01 = Integer.valueOf(strs[0].substring(i));
|
||||
for (int j = 1; j <= strs[1].length(); j++) {
|
||||
int num10 = Integer.valueOf(strs[1].substring(0, j));
|
||||
int num11 = j == strs[1].length() ? 1 : Integer.valueOf(strs[1].substring(j));
|
||||
int tmp = num00 * (num01 + num10) * num11;
|
||||
if (tmp < sum) {
|
||||
str = "" + (i == 0 ? "" : num00) + "(" + num01 + "+" + num10 + ")" + (j == strs[1].length() ? "" : num11);
|
||||
sum = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
public int maximumProduct(int[] nums, int k) {
|
||||
if (nums.length == 1) {
|
||||
return nums[0] + k;
|
||||
}
|
||||
Queue<Integer> queue = new PriorityQueue<>();
|
||||
for (int num : nums) {
|
||||
queue.add(num);
|
||||
}
|
||||
while (k > 0) {
|
||||
int min = queue.poll();
|
||||
int sub = queue.peek() - min + 1;
|
||||
if (sub < k) {
|
||||
min = queue.peek() + 1;
|
||||
k -= sub;
|
||||
} else {
|
||||
min += k;
|
||||
k = 0;
|
||||
}
|
||||
queue.add(min);
|
||||
}
|
||||
long mul = 1;
|
||||
int mod = 1000000007;
|
||||
while (!queue.isEmpty()) {
|
||||
mul = (mul * queue.poll()) % mod;
|
||||
}
|
||||
return (int) mul;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user