题目链接
力扣 (LeetCode) 1846. 减小和重新排列数组后的最大元素
不想戳的看下图
样例
数据范围
解题思路:
贪心算法 + 哈希表统计,不断维护增大一个max num。
代码如下:
public int maximumElementAfterDecrementingAndRearranging(int[] arr) {
if (arr.length == 0) {
return 0;
}
TreeMap<Integer, Integer> treeMap = new TreeMap<>();
for (int i = 0; i < arr.length; i++) {
treeMap.put(arr[i], treeMap.getOrDefault(arr[i], 0) + 1);
}
int maxNum = 0;
for(int key : treeMap.keySet()) {
int count = treeMap.get(key);
if (key > maxNum) {
for (int i = 0; i < count; i++) {
if (key == maxNum) {
break;
}
maxNum++;
}
} else if (key == maxNum) {
maxNum++;
}
}
return maxNum;
}
小结
每日一题好!
力扣好!
建议不知如何刷题的同学们,去做做力扣里面的每日一题。本人受益匪浅!
骗赞