1.题目
2.思路
取数分为两部分 :
(1)数小于等于k时:
因为两个数的和不能等于k,所以选择1时就不可以再选择k-1、选择2时就不可再选择k-2......所以,如果要和尽可能小,就要从1开始取,直到k/2.
(2)数大于k时:
没有什么限制了就,数越小越好。
计算:使用等差数列公式
3.代码:
(参考致谢:灵茶山艾府
链接:https://leetcode.cn/problems/determine-the-minimum-sum-of-a-k-avoiding-array/solutions/2396408/o1-gong-shi-pythonjavacgo-by-endlesschen-cztk/
来源:力扣(LeetCode))
class Solution {
public:
int minimumSum(int n, int k) {
int m = min(k / 2, n );
return ((1+m)*m +(2*k+(n-m)-1)*(n-m))/2;
}
};