ETH官方钱包

前往
大廳
主題

LeetCode - 1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold 解題心得

Not In My Back Yard | 2023-02-25 12:00:01 | 巴幣 0 | 人氣 134

題目連結:


題目意譯:
給定一個 m × n 的矩陣 mat 以及一整數 threshold,回傳有著總和小於等於 threshold 的正方形最大可能的邊長。如果不存在這樣子的正方形,則回傳 0。

限制:
m == mat.length
n == mat[i].length
1 ≦ m, n ≦ 300
0 ≦ mat[i][j] ≦ 10 ^ 4
0 ≦ threshold ≦ 10 ^ 5



範例測資:
範例 1:
輸入: mat = [[1,1,3,2,4,3,2],[1,1,3,2,4,3,2],[1,1,3,2,4,3,2]], threshold = 4
輸出: 2
解釋: 有著總和小於等於 4 的正方形最大可能的邊長,如圖所示,其值為 2。

範例 2:
輸入: mat = [[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2]], threshold = 1
輸出: 0


解題思維:
利用這題的想法(二維前綴和)搭配上對「答案」進行二分搜尋法(Binary Search)的方式(如這題)即可。

假設現在猜了一個邊長值 M,則我們掃過一次 mat 看哪些位置可以形成邊長 M 的正方形然後使用二維前綴和來計算出它們的總和。

如果所有正方形各自的總和都超過 threshold 的話,代表我們邊長猜得太大了,要猜小一點的值才行;反之,我們有機會可以猜更大的邊長值。

最後便可以收斂至一個可行且最大的邊長值。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作