链接: https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/
题意
输入一个正整数 target ,输出所有和为 target 的连续正整数序列
解法
乍看之下是道简答题
但还是花了一点时间写了一下
主要考虑两种做法
一种是我自己写的做法,每次枚举左端点,然后二分右端点算出答案是否符合要求
时间复杂度为O(nlogn)
一个比较好的做法是双指针
我们用两个指针 l 和 r 表示当前枚举到的以 l 为起点到 r 的区间,每次计算sum
如果sum > target 则说明以l为起点不存在和为sum的值,l自增1
如果sum < target 则说明这时候r还可以向右扩展让sum增大,r自增1
如果sum = target 此时的l和r为一组解,存入最后的结果
时间复杂度为O(n)
代码
二分答案
1 | class Solution { |
双指针
1 | class Solution { |