type
status
date
slug
summary
tags
category
icon
password
创建时间
Dec 26, 2024 03:16 AM
给你两个整数
n
和 k
。对于一个由 不同 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 k-avoiding 数组。
返回长度为
n
的 k-avoiding 数组的可能的最小总和。数学法
阶梯判断
- 当数组中所有数的求和小于
k
,直接输出
- 当数组中最大的数对和小于
k
,直接输出
- 数组中有数对大于
k
,我们从k / 2 + 1
到k
(左闭右开),加上差值即可。
在 cpp 中的整型计算中
k - (k / 2 + 1) != k / 2 - 1
;例如 k = 3:
k / 2 = 1
- k - (k / 2 + 1) = 3 - (1 + 1) = 1
- k / 2 - 1 = 1 - 1 = 0
因为,当 k 为奇数中,会向下取整,因此正确的写法为
(k + 1) / 2 - 1
第一和第二种情况可以合并
📎 参考
- 无