在 Python 中查找无法表示为给定数组任意子集的和的最小正整数
假设我们有一个排序的正数数组,该数组按升序排序,我们需要找到无法表示为给定集合任意子集元素之和的最小正值。我们必须在 O(n) 时间内解决此问题。
因此,如果输入类似于 A = [1, 4, 8, 12, 13, 17],则输出将为 2。
为了解决这个问题,我们将遵循以下步骤 -
n := A 的大小
answer := 1
对于 i 从 0 到 n,执行
如果 A[i] <= answer,则
answer := answer + A[i]
否则,
退出循环
返回 answer
示例
让我们看看以下实现以获得更好的理解 -
def get_smallest_element(A): n = len(A) answer = 1 for i in range (0, n ): if A[i] <= answer: answer = answer + A[i] else: break return answer A = [1, 4, 8, 12, 13, 17] print(get_smallest_element(A))
输入
[1, 4, 8, 12, 13, 17]
输出
2
广告