上述題目太過複雜,因而我將他變了一種問法:輸入一個整型數組,數組裏有正數也有負數。數組中一個或連續的多個整數組成一個子數組。求全部子數組的和的最大值。要求時間複雜度爲O(n)。數組
簡而言之,數組嘛,分爲完整數組和子數組,這個題目中將的是:若是我這個數組中存在負數,找出這個數組中最大的子數組。例如輸入的數組爲{1,-2,3,10,-4,7,2,-5},和最大的子數組爲{3,10,-4,7,2},所以輸出爲該子數組的和18。測試
作法:spa
class Solution { public int FindGreatestSumOfSubArray(int[] array) { // write code here //魯棒判斷 if (array.Length == 0) return 0; //定義連加運算常數a和最大值常數max(用於最後輸出) int max = array[0]; int a = 0; //循環遍歷 for(int i = 0;i<array.Length;i++) { //輸入一個數組常數+a>這個輸入的常數,加上他 if (array[i]+a>array[i]) { a +=array[i]; } //不然,把a等於他 else { a = array[i]; } //最終輸出判斷 if(a>max) { max = a; } } return max; } }