just greedy, every time choose max element currently, and judge the sum is less than its half or not
here is my code
class Solution {
public int halveArray(int[] nums) {
PriorityQueue<Double> q = new PriorityQueue<>((a, b) -> b > a ? 1 : b == a ? 0 : -1);
double sum = 0;
for (int a : nums) {
sum += a;
q.add((double)a);
}
double target = sum / 2;
int cnt = 0;
while (!q.isEmpty() && sum > target) {
double max = q.poll();
max /= 2;
sum -= max;
System.out.println(sum + "," + max);
q.add(max);
cnt++;
}
return cnt;
}
}










网友评论