算法练习

和为target的连续正数序列(LeetCode面试题)

2020-03-06  本文已影响0人  倚剑赏雪

题目

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。

序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。

示例 1:

输入:target = 9
输出:[[2,3,4],[4,5]]
示例 2:

输入:target = 15
输出:[[1,2,3,4,5],[4,5,6],[7,8]]

限制:

1 <= target <= 10^5

解析

代码

public int[][] FindContinuousSequence(int target) {
          List<int[]> res = new  List<int[]>();
        int i = 1;
        int j = 1;
        int sum = 0;
        while (i <= target/2)
        {
            if (sum < target) sum += j++;
            else if (sum > target) sum -= i++;
            else
            {
                int[] temp = new int[j-i];
                for (int k = i; k < j; k++)
                {
                    temp[k-i] = k;
                    Console.WriteLine(k);
                }
                res.Add(temp);
                sum -= i++;
                sum += j++;
            }
        }
        return res.ToArray();
    }
上一篇 下一篇

猜你喜欢

热点阅读