Leetcode 3567. Minimum Absolute Difference in Sliding Submatrix

  • [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。

相关推荐
技术帮扶户1 小时前
Leetcode-7 寻找用户推荐人
算法·leetcode·职场和发展
全栈凯哥1 小时前
Java详解LeetCode 热题 100(23):LeetCode 206. 反转链表(Reverse Linked List)详解
java·算法·leetcode·链表
kingmax542120082 小时前
动态规划十大经典题型状态转移、模版等整理(包括leetcode、洛谷题号)
算法·leetcode·动态规划
GalaxyPokemon3 小时前
LeetCode - 144. 二叉树的前序遍历
算法·leetcode·职场和发展
编程绿豆侠13 小时前
力扣HOT100之多维动态规划:62. 不同路径
算法·leetcode·动态规划
晨曦学习日记14 小时前
力扣题解654:最大二叉树
数据结构·算法·leetcode
一只鱼^_14 小时前
力扣第452场周赛
数据结构·c++·算法·leetcode·贪心算法·动态规划·剪枝
GEEK零零七16 小时前
Leetcode 2123. 使矩阵中的 1 互不相邻的最小操作数
算法·leetcode··二分图·匈牙利算法·hopcroft-karp算法
qk_antares20 小时前
【在线判题系统】By 流火
后端·leetcode
Musennn1 天前
leetcode93.复原IP地址:回溯算法中段控制与前导零处理的深度解析
java·数据结构·算法·leetcode