【算法数据结构Java实现】时间复杂度为O(n)的最大和序列
生活随笔
收集整理的這篇文章主要介紹了
【算法数据结构Java实现】时间复杂度为O(n)的最大和序列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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
******************************************/
總結
以上是生活随笔為你收集整理的【算法数据结构Java实现】时间复杂度为O(n)的最大和序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法数据结构Java实现】递归的简单剖
- 下一篇: 【算法数据结构Java实现】折半查找