一、題目描述
給定乙個陣列arr,返回陣列的最大累加和。
例:arr=[1,-2,3,5,-2,6,-1];所有的子陣列中[3,5,-2,6]可以累加出最大的和12,所以返回12。
二、兩種解法
思路一:暴力法
時間複雜度:o(n^2)
/**
* 暴力解法——o(n^2)
* @param arr
* @return
*/private
static
intsolve01
(int
arr)
}return maxsum;
}
思路二:遞推法
時間複雜度:o(n)
如果前面的累加和<0,即對最大累加和沒有貢獻,則應捨棄前面的陣列。
/**
* 巧解:遞推法——o(n)
* ——如果前面的累加和<0,即對最大累加和沒有貢獻,則應捨棄前面的陣列。
* @param arr
* @return
*/private
static
intslove02
(int
arr)
return maxsum;
}
三、推薦——遞推法 java演算法7 求子陣列的最大累加和問題
演算法目的 求子陣列的最大累加和問題 演算法要求 時間複雜度o n 空間o 1 n為陣列長度 演算法原理 從左到右遍歷陣列arr,用遍歷cur記錄每一步的累加和,當cur 0時,說明累加到當前數出現了 0的結果,那麼累加的這一部分肯定不能作為產生最大累加和的子陣列的左邊部分,此時令cur 0,表示重...
子陣列的最大累加和問題
題目 給定乙個陣列arr,返回子陣列中的最大累加和。例如,arr 1,2,3,5,2,6,1 其中子陣列 3,5,2,6 累加和最大為12,故返回12.要求 時間複雜度為o n 額外空間複雜度為o 1 public static void main string args int r maxson1...
子陣列的最大累加和問題
子陣列的最大累加和問題 給定乙個陣列arr,返回子陣列的最大累加和 例如,arr 1,2,3,5,2,6,1 所有子陣列中,3,5,2,6 可以累加出最大的和12,所以返回12.要求 時間複雜度為o n o n o n 空間複雜度為o 1 o 1 o 1 輸入描述 第一行乙個整數n。表示陣列長度 接...