
本篇博客会讲解力扣“2656. K 个元素的最大和”的解题思路,这是题目链接。
先来审题:

以下是输出示例:

以下是提示:

本题有2种思路,一种是直接按照题目所说的方式模拟,另一种是直接使用数学公式。
显然后一种思路效率更高。根据观察,每次都是操作最大的元素,而最大的元素+1后还是最大的元素,所以实际要求的就是max + max+1 + max+2 + ... + max+k-1,这就可以运用等差数列求和公式。
首项为max,末项为man+k-1,项数为k,直接(首项+末项)*项数/2即可。
int maximizeSum(int* nums, int numsSize, int k){
// 求最大值
int max = nums[0];
for (int i = 1; i < numsSize; ++i)
{
if (nums[i] > max)
max = nums[i];
}
// 计算max + max+1 + max+2 + ... + max+k-1
// (首项+末项)*项数/2
// 首项=max
// 末项=max+k-1
// 项数=k
//return (max + max+k-1) * k / 2;
return (max*2 + k-1) * k / 2;
}

轻松通过。
总结
善于寻找题目中隐藏的数学规律,提高效率。
感谢大家的阅读!















![MLF(中期借贷便利)[Medium-term lending facility],俗称麻辣粉](https://img-blog.csdnimg.cn/3f325063cabc4654bbb52577e3e9ac79.png)


