题目:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
def continuous(sum_):
small, big = 1, 2
mid = (sum_+1) // 2
cursum = 0
ans = []
cur = big + small
while small < mid:
if cursum == sum_:
ans.append([i for i in range(small, big+1)]
while small < mid and cursum > sum_:
cursum -= small
small += 1
if cursum == sum_:
ans.append([i for i in range(small, big + 1)]
big += 1
cursum += big
return ans
思路:
双指针, big指针在前面逐渐增加, small指针在后面, 当cursum大于target时, 逐一递减, 指针向前.

本文介绍了一种使用双指针技术寻找所有连续正数序列的方法,这些序列的总和等于给定的目标值。通过逐步调整前后指针的位置,算法能够有效地找到所有符合条件的序列,并按序列起始数字的大小进行排序。

627

被折叠的 条评论
为什么被折叠?



