方案1java
import java.util.ArrayList;code
public class Solution {rem
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; }
}io
方案2class
import java.util.ArrayList;import
public class Solution {List
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; }
}im