LeetCode 363. 矩形区域不超过 K 的最大数值和(DP+set二分查找)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 363. 矩形区域不超过 K 的最大数值和(DP+set二分查找)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定一個非空二維矩陣 matrix 和一個整數 k,找到這個矩陣內部不大于 k 的最大矩形和。
示例: 輸入: matrix = [[1,0,1],[0,-2,3]], k = 2 輸出: 2 解釋: 矩形區域 [[0, 1], [-2, 3]] 的數值和是 2, 且 2 是不超過 k 的最大數字(k = 2)。說明: 矩陣內的矩形區域面積必須大于 0。 如果行數遠大于列數,你將如何解答呢?來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/max-sum-of-rectangle-no-larger-than-k
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
最好在做本題之前,先把下面鏈接題目讀懂
程序員面試金典 - 面試題 17.24. 最大子矩陣(轉成一維最大子序和 DP)
- 本題說行比較多,那么按列來壓扁,兩重循環,遍歷所有的列組合
- 對每種列組合,壓扁后的 m (行數)個和,先求最大子序和(按照上題方法)
- 如果最大連續子序和 == k,返回 k,< k 進行下一個組合
- 如果子序和 > k ,那還需要找是否有 <= k 的呢?將前綴和 prefix 插入set(初始有0,防止prefix 一開始就是 k 的情況)
- 二分查找 prefix-k 的下限 lb,如果存在,則lb >= prefix-k, 兩個前綴和做差就是連續子序列的和 SUM = prefix - lb <= k,更新最大值
60 ms 9.3 MB
總結
以上是生活随笔為你收集整理的LeetCode 363. 矩形区域不超过 K 的最大数值和(DP+set二分查找)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 107. 二叉树的层次
- 下一篇: LeetCode 278. 第一个错误的