【演算法資料結構Java實現】時間複雜度為O(n)的最大和序列

李博Garvin發表於2014-11-21

1.背景

             最大序列和問題一直以來是一個比較經典的演算法題,看到這個問題,有很多解題的辦法。今天看到了一種時間複雜度只為O(n)的解題演算法,在這裡記錄下。
             思路很簡單,比方說有P1,P2,P3,P4.....這樣一個序列,我們從P1開始求和,比如說在P5時求和數小於零,就可以斷定。第一種情況,最大序列在P1~P5之間,或者說在P6~Pn之間。因為如果P1+P2+......+P5的和小於零,那麼它可以看成一個數,而且是序列第一個數,則任何一個最大序列都不會包含這個數。

2.程式碼實現

package Algorithm_analysis;

public class MaxSumOfArray {
     
	
	 public static void main(String args[]){
		   
   	  System.out.print(max_sum());
 	 }
	   public static int max_sum(){
		  int[] array={-2,11,-4,13,-5,-2}; 
		  int max_sum=0;
		  int array_sum=0;
		  for(int j=0;j<array.length;j++)
		  {
            array_sum+=array[j];
            if(array_sum<0){
            	  max_sum=0;
            }
            if (array_sum>max_sum)
            {
            	max_sum=array_sum;
            }
	      }
		  return max_sum;

}
	  }





參考:http://blog.csdn.net/superchanon/article/details/8228212  (完全四種實現方法)

/********************************

* 本文來自部落格  “李博Garvin“

* 轉載請標明出處:http://blog.csdn.net/buptgshengod

******************************************/



相關文章