请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于LC209优化暴力解的思路

波波老师您好,以下是我优化暴力解的思路,不知道是否正确。

我们创建一个新的变量int sum=0,每次遍历以i开头的所有子数组时,都把遍历到的当前元素加给sum。例如在数组{1,2,3,4,5}中,我们遍历以1开头的子数组时,每遍历到一个新的元素,就把这个元素加到sum身上。sum值的变化就为0, 1, 3, 6, 10, 15。当遍历以2开头的子数组时,只需把sum值设为0,然后重复即可。

这样通过另开辟空间记录当前的sum,我们就省去了从头计算子数组和的时间(1, 1+2, 1+2+3等等),从而使时间复杂度变为O(n^2)

请问老师这样的思路是否正确?

谢谢老师

正在回答

插入代码

1回答

liuyubobobo 2019-06-04 19:19:43

思路是正确的,但是这个问题使用滑动窗口的思路,可以把复杂度降到O(n)级别:)


这是因为,我们如果已经知道了0, 1, 2, 3, 4 五个元素的和,直接减去第0个元素,得到的就是1,2,3,4四个元素的和:)


我的参考代码:https://github.com/liuyubobobo/Play-Leetcode/blob/master/0209-Minimum-Size-Subarray-Sum/cpp-0209/main4.cpp


看看能不能理解?:)


继续加油!:)

1 回复 有任何疑惑可以回复我~
  • 提问者 软件工程小白菜 #1
    非常感谢!刚听了滑动窗口的课,有理解!
    回复 有任何疑惑可以回复我~ 2019-06-04 20:06:42
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号