力扣每日一题:K个元素的最大和
题目链接:2656.K个元素的最大和
题目描述
代码思路
题目看完直接笑嘻了,还有这么容易的题。由题可知,第一次要找出最大值m,那由于把m+1放回去,那第二次找的就是m+1,以此类推。最大答案就是首项为m,公差为1的等差数列的前k项和
代码
class Solution {
public int maximizeSum(int[] nums, int k) {
Arrays.sort(nums);//利用sort把数组从小到大排好
int max = nums[nums.length - 1];
int sum = k * (2 * max + k - 1) / 2; //等差数列和的公式
return sum;
}
}
其它解法
class Solution {
public int maximizeSum(int[] nums, int k) {
int max = 0;
for (int num : nums) max = Math.max(max, num);
return (max * 2 + k - 1) * k / 2;
}
}