LeetCode-2656. K 个元素的最大和-朴素+贪心和数学公式

Problem: 2656. K 个元素的最大和
每日一题。

文章目录

  • 思路
  • Code
    • 朴素
    • 贪心+等差求和公式

思路

从小到大排序,一直对最后那个值(下标)进行+1操作。
联系等差数列(d=1),前n项求和。n(a1+an)/2n*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)/2
        return k*(2*numMax+k-1)/2;
    }
}

你可能感兴趣的:(算法学习与刷题,leetcode,算法)