求数组任意连续一部分和大于某个数的算法
假设一个数组长度为100
连续长度定为10
参考值为 x
如果array[0]~array[9] 的和大于x
,则array[0]是想要的点
如果array[1]~array[10] 的和大于x
,则array[1]也是想要的点
。。。。。。
如果array[y]~array[y+9] 的和大于x
,则array[y]也是想要的点
找出所有的点
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
需求只是array[0]+...+array[9]>x么?
golang版本
思路就是先把前l个加起来判断是否大于x,然后sum加一个新的,减掉一个老的,在判断是否大于x,循环一次O(n)
思路与楼上一致。C实现。
扫面一遍数组array,计算出一个新数组sum_array,其中sum_array[i+1] = array[0]+ .. + array[i](sum_array[0] = 0);
扫描一遍sum_array[i],找出所有的i, sum_array[i + 10] -sum_array[i] == x, 则i为满足条件的点。