【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
方案1
import java.util.ArrayList;
public class Solution {
public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> temp = new ArrayList<Integer>();
int i=1;
int total=1;
temp.add(i);
int t=0;
while(temp.size()>=1){
if(total==sum){
//这个判断也很重要,一个数等于sum不算
if(temp.size()>1)
result.add(new ArrayList<Integer>(temp));
t=temp.remove(0);
total=total-t;
i++;
temp.add(i);
total=total+i;
}else if(total<sum)
{
i++;
temp.add(i);
total=total+i;
}else{
t=temp.remove(0);
total=total-t;
}
}
return result;
}
}
方案2
import java.util.ArrayList;
public class Solution {
public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> temp = null;
if(sum<3)
return result;
int left=1;
int right=2;
int total=left+right;
int mid = (sum+1)/2;
while(left<mid&&right<sum){
while(total>sum){
total=total-left;
left= left+1;
}
if(total==sum){
temp=new ArrayList<Integer>();
for(int i=left;i<=right;i++)
temp.add(i);
result.add(temp);
}
right++;
total=total+right;
}
return result;
}
}
来源:oschina
链接:https://my.oschina.net/u/2511906/blog/3143887