题目描述:输出所有和为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) {
}
}