- [Leetcode 3567. Minimum Absolute Difference in Sliding Submatrix](#Leetcode 3567. Minimum Absolute Difference in Sliding Submatrix)
- [1. 解题思路](#1. 解题思路)
- [2. 代码实现](#2. 代码实现)
1. 解题思路
这一题想了一下,没想到啥好的思路,就是暴力直接求解了一下,直接一个三重循环强行求取了一下答案。
唯一可以谈得上优化的就是在滑动过程中通过控制有序数列的方式来优化临近值的求解。
2. 代码实现
给出python代码实现如下:
python
class Solution:
def minAbsDiff(self, grid: List[List[int]], k: int) -> List[List[int]]:
n, m = len(grid), len(grid[0])
def get_min_diff(nums):
ans = math.inf
pre = nums[0]
for i in range(1, k*k):
if nums[i] == pre:
continue
ans = min(nums[i] - pre, ans)
pre = nums[i]
return ans if ans != math.inf else 0
ans = [[0 for _ in range(m-k+1)] for _ in range(n-k+1)]
for i in range(n-k+1):
nums = sorted([grid[i+t][j] for t in range(k) for j in range(k)])
ans[i][0] = get_min_diff(nums)
for j in range(m-k):
for t in range(k):
nums.pop(bisect.bisect_left(nums, grid[i+t][j]))
bisect.insort(nums, grid[i+t][j+k])
ans[i][j+1] = get_min_diff(nums)
return ans
提交代码评测得到:耗时46ms,占用内存18MB。