程序员面试金典 - 面试题 17.24. 最大子矩阵(转成一维最大子序和 DP)
生活随笔
收集整理的這篇文章主要介紹了
程序员面试金典 - 面试题 17.24. 最大子矩阵(转成一维最大子序和 DP)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
- 2.1 前綴和(超時)
- 2.2 動態規劃
1. 題目
給定一個正整數和負整數組成的 N × M 矩陣,編寫代碼找出元素總和最大的子矩陣。
返回一個數組 [r1, c1, r2, c2],其中 r1, c1 分別代表子矩陣左上角的行號和列號,r2, c2 分別代表右下角的行號和列號。
若有多個滿足條件的子矩陣,返回任意一個均可。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/max-submatrix-lcci
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
類似題目: LeetCode 363. 矩形區域不超過 K 的最大數值和(DP+set二分)
2.1 前綴和(超時)
- 求出每個位置與(0,0)構成的子矩陣的和
- 4層 for 循環遍歷左上角為(x,y),右下角為(i,j)的子矩陣
- 其和為 sum=prefixsum[i][j]?prefixsum[x?1][j]?prefixsum[i][y?1]+prefixsum[x?1][y?1]sum = prefixsum[i][j]-prefixsum[x-1][j]-prefixsum[i][y-1]+prefixsum[x-1][y-1]sum=prefixsum[i][j]?prefixsum[x?1][j]?prefixsum[i][y?1]+prefixsum[x?1][y?1]
- 復雜度 O(m2n2)O(m^2n^2)O(m2n2),通過14/25個測試
2.2 動態規劃
類似題目:
LeetCode 152. 乘積最大子序列(DP)
本題參考:LeetCode 53. 最大子序和(動態規劃),本質一樣。
- 2層for循環先把所有可能的行組合找出來
- 然后列向求和,壓扁它
- 對這個壓扁的一維數組求最大子序和即可
- 時間復雜度 O(m2n)O(m^2n)O(m2n)
384 ms 12.7 MB
總結
以上是生活随笔為你收集整理的程序员面试金典 - 面试题 17.24. 最大子矩阵(转成一维最大子序和 DP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 901. 股票价格跨度
- 下一篇: LeetCode 107. 二叉树的层次