最大子序和
給定乙個整數陣列 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 ...