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;
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) { } }
相关文章推荐
- 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
- 输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
- 今天开始学Java 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子
- 输入一个正数 n,输出所有和为 n 的连续正数序列 [No. 25]
- Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。 Input 输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义
- 【算法学习-01】 输入一个正数 n,输出所有和为 n 连续正数序列。
- 输出所有和为S的连续正数序列
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子
- 输入一个正数n,输出所有和为n 连续正数序列
- C++输出所有和为S的连续正数序列(牛客剑指offer)
- 输出所有和为n连续正数序列
- 输入一个正数n,输出所有和为n连续正数序列。
- 一道算法面试题 -- 输出所有和为n连续正数序列
- 输入一个正数n,输出所有和为n连续正数序列。
- 输入一个正数 n,输出所有和为n 连续正数序列。
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
- 【每日面试题】输入一个正数n,输出所有和为n连续正数序列
- 输入一个正数 n,输出所有和为 n 连续正数序列。
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
- 输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。