Leetcode 3768. Minimum Inversion Count in Subarrays of Fixed Length

  • [Leetcode 3768. Minimum Inversion Count in Subarrays of Fixed Length](#Leetcode 3768. Minimum Inversion Count in Subarrays of Fixed Length)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题是leetcode双周赛171的第四题,是一个hard的题目。

这一题思路上就是一个滑动窗口的题目,我们只需要考察长度为 k k k的连续窗口中加入一个元素与减去一个元素的状态即可。

加入最右的一个元素,会带来的反序列的个数就是窗口中所有大于该元素的数的个数,反之,减去最左的一个元素,其减少的反序列的个数就是窗口中所有小于该数的元素的个数。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def minInversionCount(self, nums: List[int], k: int) -> int:
        n = len(nums)
        ans = math.inf
        cnt = 0
        window = []
        for i, num in enumerate(nums):
            if i-k >= 0:
                idx = bisect.bisect_left(window, nums[i-k])
                cnt -= idx
                window.pop(idx)
            idx = bisect.bisect_right(window, num)
            cnt += len(window) - idx
            window.insert(idx, num)
            if i >= k-1:
                ans = min(ans, cnt)
        return ans

提交代码评测得到:耗时5257ms,占用内存32.28MB。

相关推荐
罗湖老棍子8 小时前
滑动窗口与双调队列:幕布覆盖问题(定右缩左满分板子)改编自LeetCode 1438
算法·滑动窗口·单调队列
喵喵蒻葉睦2 天前
力扣 hot100 最小覆盖子串 哈希表 滑动窗口 Java 题解
java·算法·leetcode·哈希算法·散列表·滑动窗口
罗湖老棍子2 天前
Maximum Subarray Sum II最大连续区间和(CSES- P1644)
算法·滑动窗口·单调队列
喵喵蒻葉睦2 天前
力扣 hot100 滑动窗口最大值 单调双端队列 java 简单题解
java·数据结构·算法·leetcode·双端队列·滑动窗口·队列
月明长歌3 天前
【码道初阶-Hot100】LeetCode 438 + 567 对照详解:一套滑动窗口模板,彻底讲透“固定长度窗口 + 计数数组 + count维护”
算法·leetcode·滑动窗口
Jasmine_llq24 天前
《P3572 [POI 2014] PTA-Little Bird》
算法·滑动窗口·单调队列·动态规划(dp)·多组查询处理·循环优化(宏定义 rep)
cur1es1 个月前
【TCP 协议的相关特性】
java·网络·网络协议·tcp/ip·tcp·滑动窗口·连接管理
逆境不可逃1 个月前
LeetCode 热题 100 之 76.最小覆盖子串
java·算法·leetcode·职场和发展·滑动窗口
识君啊1 个月前
Java 滑动窗口 - 附LeetCode经典题解
java·算法·leetcode·滑动窗口
拾光Ծ1 个月前
【优选算法】滑动窗口算法:专题一
c++·算法·滑动窗口·c++算法·滑动窗口算法·笔试面试