问道小题# JobHunting - 待字闺中p*32013-06-15 07:061 楼给一个数组和一个目标数s找出所有和为s的子数组例如 [3,1,2,-1,-2], s=3[[3],[1,2],[3,1,2,-1,-2]]这题能做到优于O(n^2)么?换句话说能不用检查所有的子数组么?
r*h2013-06-15 07:062 楼元素非负的话好像可以O(n)【在 p****3 的大作中提到】: 给一个数组和一个目标数s: 找出所有和为s的子数组: 例如 [3,1,2,-1,-2], s=3: [[3],[1,2],[3,1,2,-1,-2]]: 这题能做到优于O(n^2)么?: 换句话说能不用检查所有的子数组么?
r*n2013-06-15 07:063 楼定义一个int sum[N]数组,sum[i] = arr[0]+arr[1]+...+arr[i]然后这题就变成了找两个indices i, j, i<=j, such that sum[j] - sum[i] = s,这个是2-sum problem的变体,可以有O(N)解。
r*e2013-06-15 07:064 楼赞我想成下标不连续的了【在 r*********n 的大作中提到】: 定义一个int sum[N]数组,sum[i] = arr[0]+arr[1]+...+arr[i]: 然后这题就变成了找两个indices i, j, i<=j, such that sum[j] - sum[i] = s,这: 个是2-sum problem的变体,可以有O(N)解。