Maximum Side Length of a Square with Sum Less than or Equal to Threshold LeetCode solution in Python
1class Solution:2def maxSideLength(self, mat: List[List[int]], threshold: int) -> int:3# prefix matrix4dp = [[0] * (len(mat[0]) + 1) for _ in range(len(mat) + 1)]56for i in range(1, len(mat) + 1):7for j in range(1, len(mat[0]) + 1):8dp[i][j] = (9dp[i][j - 1] + dp[i - 1][j] - dp[i - 1][j - 1] + mat[i - 1][j - 1]10)1112# bin search13max_side = 014for i in range(1, len(mat) + 1):15for j in range(1, len(mat[0]) + 1):16if min(i, j) < max_side:17continue18left = 019right = min(i, j)20while left <= right:21mid = (left + right) // 222pref_sum = (23dp[i][j]24- dp[i - mid][j]25- dp[i][j - mid]26+ dp[i - mid][j - mid]27)28if pref_sum <= threshold:29max_side = max(max_side, mid)30left = mid + 131else:32right = mid - 133return max_side