Java算法 leetcode简单刷题记录5
-
老人的数目: 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;}
}