您的位置:首页 > 其它

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

2017-05-27 20:19 489 查看
题目描述:输出所有和为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) {

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐