java中如何求數(shù)組中大連續(xù)子序列的和?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
站在用戶的角度思考問題,與客戶深入溝通,找到漳縣網(wǎng)站設(shè)計與漳縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋漳縣地區(qū)。時間復(fù)雜度為O(n)
只需要過一遍數(shù)組即可,但是需要深入理解這個數(shù)組的本質(zhì)特征,即動態(tài)規(guī)劃的方法。
首先設(shè)置兩個變量,thisSum和maxSum。其中thisSum表示走到當(dāng)前位置元素的和;maxSum表示走到當(dāng)前位置下的連續(xù)子序列的大和。
注意:如果thisSum為負(fù),則直接將其置為0;如果thisSum大于maxSum,則將maxSum置為thisSum的值。
public static int maxSubArray(int[] nums) { int length = nums.length; if(length <= 0) return 0; int CurSum = 0; int max = Integer.MIN_VALUE; for(int i = 0; i < length; i++) { if(CurSum <= 0) //當(dāng)當(dāng)前的和小于等于0,那么就給其置為當(dāng)前元素的值 CurSum = nums[i]; else CurSum += nums[i]; if(CurSum > max) max = CurSum; } return max; }
感謝各位的閱讀!看完上述內(nèi)容,你們對java中如何求數(shù)組中大連續(xù)子序列的和大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道。