【发布时间】:2016-11-05 11:56:13
【问题描述】:
我正在尝试解决以下问题。我以 O(n^2) 的时间复杂度解决了这个问题。有没有办法通过只迭代一次数组来进一步优化它并将复杂度降低到 O(n)?
给定一个包含 n 个整数和一个数字 S 的数组。我需要找到总和大于数字 S 的连续整数的最小集合。如果不存在这样的集合,我将打印 0。
所需的复杂性: 空间复杂度-O(1) 时间复杂度-O(n)
例子-
数组 A={2,5,4,6,3,9,2,17,1}
S=17
输出=2
说明-
可能的解决方案是:-
{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。
【问题讨论】:
-
有没有尝试独立解决这个问题?
-
我投票结束这个问题,因为 Stack Overflow 不会为你做作业。
-
我用时间复杂度 O(n^2) 解决了它,但我无法进一步优化它。这个问题可以在 O(n) 的时间复杂度内解决,无需使用额外的数组。
-
我用...解决它:请展示您的算法(在您的问题中)以及您改进它的尝试。
-
同时指明整数是否可以为负数。
标签: arrays algorithm time-complexity