问题是 - 给出一个大小为n和数字S的整数数组。您必须找到总和为的最小集合的连续整数比S.如果没有这样的组存在的数量,输入0找到其总和大于给定整数的最小整数集合
空间复杂度O(1) 时间复杂-O(n)的
例 -
阵列A = {2时, 5,4,6,3,9,2,17,1}
S = 1 7
输出= 2
Explanation-
可能的解决方案是: -
{2,5,4,6,3} = 2 + 5 + 4 + 6 + 3 = 20 (> 18)= 5号
{5,4,6,3,9} = 27(> 18)= 5号
{4,6,3,9} = 22(> 18) -4号码
{6,3,9,2} = 20 = 4个数字
{3,9,2,17} = 4个数字
{9,2,17} = 3倍的数字
{2 ,17} = 2个数字
所以,最小= 2个数字。输出= 2。
我的尝试 - 我在O(n^2)时间复杂度中解决了这个问题。有没有办法通过迭代阵列来进一步优化它,并将复杂度降至O(n)?
不需要整个代码。只要基本逻辑的基本思想就足够了。谢谢。
任何尝试独立解决这个问题? – dasblinkenlight
我投票结束这个问题作为题外话,因为堆栈溢出不做你的功课。 – David
我用时间复杂度O(n^2)解决了它,但我无法进一步优化它。这个问题可以通过O(n)时间复杂度解决,而不需要使用额外的数组。 –