leetcode刷題 動態規劃 最大子序和

2021-10-19 07:56:03 字數 809 閱讀 8347

最大子序和

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

示例 1:

輸入:nums = [-2,1,-3,4,-1,2,1,-5,4]

輸出:6

解釋:連續子陣列 [4,-1,2,1] 的和最大,為 6 。

示例 2:

輸入:nums = [1]

輸出:1

示例 3:

輸入:nums = [0]

輸出:0

示例 4:

輸入:nums = [-1]

輸出:-1

示例 5:

輸入:nums = [-100000]

輸出:-100000

思路:動態規劃:

f[i] : 以i為右端點的最大子串行和。

if i= 0 f[0] = nums[0]

else f[i] = max(f[i-1] + nums[i], nums[i])

因為這個題目沒有規定左右端點,故max = max(f[i]), i = 0…n-1

**:

int maxsubarray(int* nums, int numssize)

}return max;

}

發現這個題目只要求出來最大值,沒有必要話費空間儲存f[i]陣列,只要記錄下這個陣列的最大值就可,所以繼續就該**

int maxsubarray(int* nums, int numssize)

}return max;

}

leetcode刷題 動態規劃

動態規劃 英語 dynamic programming,簡稱 dp 是一種在數學 管理科學 電腦科學 經濟學和生物資訊學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。動態規劃常常適用於有重疊子問題和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於樸素解法。動態規劃背後的基...

Leetcode刷題 190713 動態規劃

輸入乙個陣列,陣列中每個元素代表乙個房子,我們作為robber可以對每個房子進行rob。但是規定不能同時又兩個相鄰的房子被robbed。陣列中每個元素的值代表房子的價值,需要我們輸出經過rob後最大的收益是多少。很明顯考察的是動態規劃,每檢查乙個房子都有兩種狀態即rob和no rob。對應的價值方程...

leetcode刷題總結 動態規劃

152乘積最大的連續子串行 圈複雜度很高,不要遺漏分支 vectormx len,0 vectormn len,0 213打家劫舍 ii 如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。vectors len,0 vectorn len,0 983最低票價 初始值特別要小心!我們定義 dp ...