2656. K 个元素的最大和 --力扣 --JAVA

题目

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次,最大化你的得分:

从 nums 中选择一个元素 m 。
将选中的元素 m 从数组中删除。
将新元素 m + 1 添加到数组中。
你的得分增加 m 。
请你返回执行以上操作恰好 k 次后的最大得分。

解题思路

  1. 要获得最大化得分所以需要每次都读取数组中最大的值;
  2. m为当前数组中最大元素,则更换后的m + 1也应为最大元素;
  3. 获取最初的最大值max,然后从第二次操作开始,对max + 1然后累加到结果中。

代码展示

package Two.Six.Five;

import java.util.Arrays;

public class Six {
    public static void main(String[] args) {
        Six six = new Six();
        System.out.println(six.maximizeSum(new int[]{1,2,3,4,5},3));
        System.out.println(six.maximizeSum(new int[]{5,5,5},2));
    }
    public int maximizeSum(int[] nums, int k) {
        int ans = 0;
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < nums.length; i++){
            if(max < nums[i]){
                max = nums[i];
            }
        }
        max--;
        for (int i = 0; i < k; i++){
            ans += max + 1;
            max++;
        }
        return ans;
    }
}

你可能感兴趣的:(力扣练习,算法,数据结构)