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