给你两个整数 n
和 k
。
对于一个由 不同 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 k-avoiding 数组。
返回长度为 n
的 k-avoiding 数组的可能的最小总和。
示例 1:
输入:n = 5, k = 4
输出:18
解释:设若 k-avoiding 数组为 [1,2,4,5,6] ,其元素总和为 18 。
可以证明不存在总和小于 18 的 k-avoiding 数组。
示例 2:
输入:n = 2, k = 6
输出:3
解释:可以构造数组 [1,2] ,其元素总和为 3 。
可以证明不存在总和小于 3 的 k-avoiding 数组。
方法一:hash检测
TypeScript
function minimumSum(n: number, k: number): number {
let sum = 0
const set = new Set<Number>()
for(let i = 1;n != 0; i++) {
if (!set.has(k - i)) {
set.add(i)
sum += i
n--
}
}
return sum;
};
结果:

方法二:暴力法
TypeScript
function minimumSum(n: number, k: number): number {
const list = new Array();
loop:for (let i = 1; n != 0; i++) {
for (let j = 0;j < list.length;j++){
if (i + list[j] == k) {
continue loop
}
}
list.push(i)
n--
}
return list.reduce((a, b) => a + b);
};
结果:
