leetcode-最大子序和(动态规划讲解)
生活随笔
收集整理的這篇文章主要介紹了
leetcode-最大子序和(动态规划讲解)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最大子序和(動態規劃講解)
給定一個整數數組?nums?,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 示例: 輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。 進階: 如果你已經實現復雜度為 O(n) 的解法,嘗試使用更為精妙的分治法求解。 重點在動態規劃。 1.采用的是s[j] -s[i]的方式,其中s[i] 和s[j]的查找的時間復雜度教大。 class Solution {public int maxSubArray(int[] nums) {if(nums.length==1)return nums[0];int sum[]=new int [nums.length+1];sum[0]=0;int temp=0;for(int i=1;i<nums.length+1;i++){sum[i]=sum[i-1]+nums[i-1];}int len=nums.length;int max=Integer.MIN_VALUE;for(int i=0;i<len+1;i++){for(int j=i+1;j<len+1;j++){if(sum[j]-sum[i]>max)max=sum[j]-sum[i];}}return max;} } 2.動態規劃解法- 令狀態dp[i]表示以A[i]作為末尾的連續序列的最大和。比如[-2,1,-3,4,-1,2,1,-5,4] 一個序列,下標分別是0,1,2,3,4,5,6,7,8
- 作如下考慮:因為dp[i]要求是必須以A[i]結尾的連續序列,那么只有兩種情況:
?
轉載于:https://www.cnblogs.com/patatoforsyj/p/9463945.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的leetcode-最大子序和(动态规划讲解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客练习赛24题解(搜索,DP)
- 下一篇: HDU 1520 Anniversary