Leetcode2656. K 个元素的最大和

Every day a Leetcode

题目来源:2656. K 个元素的最大和

解法1:排序 + 贪心

为使得分最大,从数组 nums 中选择的元素 num 应该尽可能大。

将数组 nums 排序后,最大元素为 max = nums.back()。

得分总和为 ans=max+(max+1)+…+(max+k-1)。

代码:

/*
 * @lc app=leetcode.cn id=2656 lang=cpp
 *
 * [2656] K 个元素的最大和
 */

// @lc code=start
class Solution
{
public:
    int maximizeSum(vector<int> &nums, int k)
    {
        sort(nums.begin(), nums.end());
        int max = nums.back();
        int sum = 0;
        for (int i = 0; i < k; i++)
            sum += max + i;
        return sum;
    }
};
// @lc code=end

结果:

Leetcode2656. K 个元素的最大和_第1张图片

复杂度分析:

时间复杂度:O(nlogn),其中 n 是数组 nums 的长度。

空间复杂度:O(1)。

你可能感兴趣的:(Every,day,a,leetcode,leetcode,C++,算法,排序)