题目:计算有多少种连续的正数序列的和为100(至少包含两个数,输出要求序列内从小到大的顺序,序列间按照从小到大的顺序)
思路:双指针
func pushres(small, big int) []int { var tmp []int for i := small; i <= big; i++ { tmp = append(tmp, i) } return tmp } func FindContinuousSequence(sum int) [][]int { result := [][]int{} flag := 0 if sum <= 2 { return result } small, big := 1, 2 flag = small + big end := (1 + sum) / 2 for small < end {//不需要判断small < big,这种情况因为small==big的情况才有可能等于sum,small<end,不可能出现这种情况 var tmp []int//不需要每次都清空tmp if flag == sum { tmp = pushres(small,big) result = append(result, tmp) } for (small < end) && (flag > sum) { flag -= small small++ if flag == sum { tmp = pushres(small,big) result = append(result, tmp) } } big++ flag += big } return result }