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

来源:互联网 发布:mac 照片导出 编辑:程序博客网 时间:2024/04/30 15:27

题目描述:输出所有和为s的连续正数序列?

import java.util.ArrayList;public class Solution {    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {       ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();       if(sum<=1){            return lists;       }        int start = 1;        int end = 2;        ArrayList<Integer> list = null;        while(start!=(sum+1)/2){            int curSum = sumOfList(start,end);            if(curSum==sum){                list = new ArrayList<Integer>();                for(int i=start;i<=end;i++){                    list.add(i);                }                lists.add(list);                start++;                end++;            }            else if(curSum<sum){                end++;            }else{                start++;            }        }        return lists;    }        public int sumOfList(int start,int end){        int sum = 0;        for(int i=start;i<=end;i++){            sum += i;        }        return sum;    }}




import java.util.ArrayList;/**本题的解题思路是:这个问题可以看成是等差数列求和问题,差为1,和就是s*根据高中时候等差数列求和的公式为:数列最后一个数为an=a1+(n-2)*d 数列的和为:sn=n*an+n*(n-1)*d*/public class Solution {    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {           }}




原创粉丝点击