老人的数目: https://leetcode.cn/problems/number-of-senior-citizens/
substring(a,b) 前闭后开
统计能整除数字的位数: https://leetcode.cn/problems/count-the-digits-that-divide-a-number/
并不复杂,直接写就行
从数量最多的堆取走礼物: https://leetcode.cn/problems/take-gifts-from-the-richest-pile/
一堆数里依次每次取出最大值,或者最小值,都可以用优先级队列PriorityQueue;
注意:最后求和int可能越界,用long类型
class Solution {
public long pickGifts(int[] gifts, int k) {
// 保证每次队列弹出最大值
PriorityQueue<Integer> queue = new PriorityQueue<Integer>((obj1, obj2) -> {
return obj2 - obj1;
});
for (int gift : gifts) {
queue.add(gift);
}
int i = 0;
while (i < k && queue.size() > 0) {
int q = queue.poll();
queue.add((int) Math.sqrt(q));
i++;
}
long sum = 0;
while (queue.size() > 0) {
sum += queue.poll();
}
return sum;
}
}