Problem: 2656. K 个元素的最大和
每日一题。
文章目录
- 思路
- Code
- 朴素
- 贪心+等差求和公式
思路
从小到大排序,一直对最后那个值(下标)进行+1操作。
联系等差数列(d=1),前n项求和。n(a1+an)/2
或n*a1+n(n-1)d/2
Code
朴素
class Solution {public int maximizeSum(int[] nums, int k) {int len = nums.length;int SnumMax = 0;Arrays.sort(nums);while (k-- != 0) {SnumMax += nums[len - 1];nums[len - 1] += 1;}return SnumMax;}
}
贪心+等差求和公式
class Solution {public int maximizeSum(int[] nums, int k) {int numMax = 0;for(int i:nums){// 找到最大值numMax = Math.max(numMax,i);}// 等差数列求和公式n(a1+an)/2return k*(2*numMax+k-1)/2;}
}