美文网首页
面试题57_II_和为s的连续正数序列

面试题57_II_和为s的连续正数序列

作者: shenghaishxt | 来源:发表于2020-02-19 13:17 被阅读0次

题目描述

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

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

题解

借用上一题的思想,还是使用双指针,只是这里的指针代表的不是数组下标,而是数字。开始时把left初始化为1,right初始化为2。题目连续正数列的性质,可以使用求和公式求序列和:s = (首项+末项) * 项数 / 2

有一个地方要注意,正数序列的第一个数不可能超过s的一半,将这个条件加入循环条件避免多余的运算。

  • 如果序列和小于sum,则扩大序列的范围,即right++;
  • 如果序列和大于sum,则缩小序列的范围,即left+;
  • 如果序列和等于sum,则找到一个结果。然后扩大序列的范围,即right++。

下面是参考代码:

class Solution {
    public int[][] findContinuousSequence(int target) {
        ArrayList<int[]> resArr = new ArrayList<>();
        int left = 1, right = 2;
        while (left < right && left <= target/2) {
            int curSum = (left + right) * (right - left + 1) / 2;
            if (curSum < target) {
                right++;
            } else if (curSum > target) {
                left++;
            } else {
                int[] temp = new int[right - left + 1];
                int begin = left;
                for (int i = 0; i < temp.length; i++) {
                    temp[i] = begin++;
                }
                resArr.add(temp);
                left++;
            }
        }
        int[][] res = new int[resArr.size()][];
        for (int i = 0; i < res.length; i++) {
            res[i] = resArr.get(i);
        }
        return res;
    }
}

相关文章

  • LeetCode | 面试题 57 - Ⅱ. 和为s的连续正数序

    LeetCode 面试题 57 - Ⅱ. 和为s的连续正数序列【Easy】【Python】【滑窗】【数学】 问题...

  • 面试题57_II_和为s的连续正数序列

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

  • Java日记2018-05-20

    第一题 和为 S 的连续正数序列 输出所有和为 S 的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从...

  • 11-15题

    11、和为S的连续正数序列输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序...

  • 面试题57_2:和为S的连续正数序列

    和为s的连续正数序列 输入一个正数s,打印出所有何为s的连续正数序列(至少含有两个数)。 例如输入15,由于1+2...

  • 和为s的连续整数序列

    找出所有和为S的连续正数序列输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

  • 4.7 双指针问题(1)

    方法 暂无 注意点 暂无 目录 和为S的连续正数序列(很经典) 和为S的连续正数序列 小明很喜欢数学,有一天他在做...

  • LeetCode 每日一题 [18] 和为s的连续正数序列

    LeetCode 面试题57 - II. 和为s的连续正数序列 [简单] 输入一个正整数 target ,输出所有...

  • 和为S的连续正数序列

    题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不...

  • 和为S的连续正数序列

    题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并...

网友评论

      本文标题:面试题57_II_和为s的连续正数序列

      本文链接:https://www.haomeiwen.com/subject/kltafhtx.html