题目链接:3075. 幸福值最大化的选择方案(中等)
算法原理:
解法:贪心
45ms击败52.13%
时间复杂度O(Nlogn)
升序排序后,从后往前遍历,先挑最大的,每挑一次会减少1,那么挑了i次就减少了n-1-i
Java代码:
class Solution { public long maximumHappinessSum(int[] h, int k) { int n=h.length; Arrays.sort(h); long ret=h[n-1]; for(int i=n-2;i>n-1-k&&h[i]>n-1-i;i--) ret+=h[i]-(n-1-i); return ret; } }