leetcode53-簡單動態規劃

題目描述

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。

示例:

輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,爲 6。

代碼

class Solution {
    
    public int maxSubArray(int[] nums) {
    	int ans=nums[0];
    	int sum=0;
    	for(int i=0;i<nums.length;i++)
    	{
    		if(sum>0)
    		{
    			sum+=nums[i];
    		}else {
    			sum=nums[i];
    		}
    		ans=Math.max(ans, sum);
    	}
    	return ans;
    }

}

知識點

1、很明顯用動態規劃很好解決
2、動態規劃:
https://www.cnblogs.com/hithongming/p/9229871.html

思路

1、不斷向後找,如果當前和<0往後越加越小,所以直接從當前開始即讓sum=當前數
2、如果>0則往後加
3、上述步驟完成後,將ans與sum做比較取大

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章