題目連結:
題目意譯:
你被給定一個 m × n 大小的整數矩陣 grid。
我們定義一個「沙漏」為矩陣中的一部份,其形式為以下:
回傳一個沙漏的最大元素總和之值。
注意到沙漏是無法旋轉的,並且必須完整地被包含於矩陣之中。
限制:
m == grid.length
n == grid[i].length
3 ≦ m, n ≦ 150
0 ≦ grid[i][j] ≦ 10 ^ 6
範例測資:
範例 1:
輸入: grid = [[6,2,1,3],[4,2,1,5],[9,2,8,7],[4,1,2,9]]
輸出: 30
解釋: 上圖顯示的格子們中有著最大總和值的沙漏為:6 + 2 + 1 + 2 + 9 + 2 + 8 = 30。
範例 2:
輸入: grid = [[1,2,3],[4,5,6],[7,8,9]]
輸出: 35
解釋: 該矩陣中只有一個沙漏,其總和值為:1 + 2 + 3 + 5 + 7 + 8 + 9 = 35。
解題思維:
直接窮舉所有沙漏的中心,即一個沙漏正中間的格子(或是任意格子也行)。而這些中心可以在以第 1 列第 1 行(索引值從 0 開始)這個格子為左上角到第 m - 2 列到第 n - 2 行這個格子為右下角的子矩陣中的任意位置。
因此有了中心之後,我們直接檢查每一個沙漏的總和值哪個最大即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。