Leetcode 3567. Minimum Absolute Difference in Sliding Submatrix
- Leetcode 3567. Minimum Absolute Difference in Sliding Submatrix
- 1. 解题思路
- 2. 代码实现
- 题目链接:3567. Minimum Absolute Difference in Sliding Submatrix
1. 解题思路
这一题想了一下,没想到啥好的思路,就是暴力直接求解了一下,直接一个三重循环强行求取了一下答案。
唯一可以谈得上优化的就是在滑动过程中通过控制有序数列的方式来优化临近值的求解。
2. 代码实现
给出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.infpre = nums[0]for i in range(1, k*k):if nums[i] == pre:continueans = min(nums[i] - pre, ans)pre = nums[i]return ans if ans != math.inf else 0ans = [[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。