题解 | #和为S的连续正数序列#
和为S的连续正数序列
https://www.nowcoder.com/practice/c451a3fd84b64cb19485dad758a55ebe
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param sum int整型 * @return int整型二维数组 */ func FindContinuousSequence(sum int) [][]int { // write code here // 滑动窗口, 当前和小于目标和,扩大右边界,当前和大于目标和,左边界右移 // 找到相等和,记录数组 // 此状态下,左边继续右移,同时当前和减去移出的左边界 // 终止状态:右边界达到目标和 if sum <= 0 { return [][]int{{0}} } res := make([][]int, 0) left, right := 1, 2 curSum := left + right for right < sum { if curSum < sum { right += 1 curSum += right } else if curSum > sum { curSum -= left left += 1 } else { tmp := make([]int, right-left+1) for i:= range tmp { tmp[i] = i + left } res = append(res, tmp) curSum -= left left += 1 } } return res }