查找不是已排序数组之和的最小整数

时间:2017-04-05 20:13:00

标签: java arrays algorithm performance memory-efficient

我刚从考试中回来,这个考试有一个我不知道如何接近的问题:

  

给定一个排序数组(数组中的每个元素都大于或   等于前一个) arr 的正整数,找到   最小的整数,它不是元素的总和   数组 arr ,其中数组中的每个元素只能出现一次   总之。

例如,给定数组{1,2,4,6},

  • 1不是答案,因为它是总和1.
  • 2不是,出于同样的原因。
  • 3不是,因为3 = 1 + 2

  • ...

  • 13不是,因为13 = 1 + 2 + 4 + 6
  • 14就是答案,因为它不是数组中元素的总和(每个元素出现一次)。

因此结果将是14。

要求算法尽可能高效。我写了两个非常低效的算法,一个从1开始迭代每个数字,并用递归检查是否是总和;另一种算法记录了一个非常大的数组中数组的所有可能总和,并检查每次是否有两个连续和,其差值大于1(因此返回这些和之间的最小整数)。

P.S。 - 我们需要用Java编写它,但如果您有其他语言(如C或Python)的解决方案,请使用您熟悉的任何语言。

0 个答案:

没有答案