和为S的连续正数序列

来源:互联网 发布:淘宝开网店要多少钱 编辑:程序博客网 时间:2024/05/15 15:41

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

import java.util.ArrayList;public class Solution {    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {                ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();        int small = 1;         int big = 2;        int curSum = small+big;        while(small < big && small < (sum+1)/2){            if(curSum == sum){                ArrayList<Integer> list = new ArrayList<Integer>();                                for(int i=small;i<=big;i++){                    list.add(i);                }                result.add(list);                //更新                curSum -= small;                //区间右移                small ++;                        big ++;                curSum += big;            }else if(curSum < sum){          //tmp_sum小,右侧扩展                //区间右侧 右移,包括更大的数字                     big ++;                curSum += big; //更新            }else{                             //tmp_sum大,左侧紧缩                curSum -= small;                small ++;      //左侧紧缩            }        }        return result;    }}


原创粉丝点击