题目
给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次,最大化你的得分:
从 nums 中选择一个元素 m 。
将选中的元素 m 从数组中删除。
将新元素 m + 1 添加到数组中。
你的得分增加 m 。
请你返回执行以上操作恰好 k 次后的最大得分。
解题思路
- 要获得最大化得分所以需要每次都读取数组中最大的值;
- m为当前数组中最大元素,则更换后的m + 1也应为最大元素;
- 获取最初的最大值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;}
}