輸出全部和爲S的連續正數序列。

方案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

相關文章
相關標籤/搜索