今天反复找了找会做的题,确实不多了,这不正好遇到了吗?开心
2829. k-avoiding 数组的最小总和
给你两个整数 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 数组。
提示:
1 <= n, k <= 50
思路:用hash存储已添加的值和不能添加的值
# @param {Integer} n
# @param {Integer} k
# @return {Integer}
def minimum_sum(n, k)
i = 1
h = {}
a = []
while a.length < n
if (!h.has_key?(i)) && (!h.has_key?(k-i))
a << i
h[i] = 1
h[k-i] = 1
end
i += 1
end
a.sum
end