Leetcode 2958. Length of Longest Subarray With at Most K Frequency

  • [Leetcode 2958. Length of Longest Subarray With at Most K Frequency](#Leetcode 2958. Length of Longest Subarray With at Most K Frequency)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题思路上其实也很简单,就是一个滑动窗口的思路,遍历窗口的左边界,平移获得使得其内部字符的frequency不超过k的最大右边界,然后取各个窗口长度的最大值即可。

显然左右边界都是单调的,因此整体算法复杂度就是 O ( N ) O(N) O(N)。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def maxSubarrayLength(self, nums: List[int], k: int) -> int:
        i, j, n = 0, 0, len(nums)
        cnt = defaultdict(int)
        ans = 0
        while j < n:
            x = nums[j]
            cnt[x] += 1
            j += 1
            while cnt[x] > k:
                cnt[nums[i]] -= 1
                i += 1
            ans = max(ans, j-i)
        return ans

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

相关推荐
GGBondlctrl9 天前
【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!
网络·网络协议·tcp/ip·滑动窗口·流量控制·拥塞控制·tcp协议特性
搞笑症患者18 天前
LeetCode Hot100 - 滑动窗口篇
算法·leetcode·滑动窗口
freephp18 天前
细聊滑动窗口
滑动窗口
Trouvaille ~20 天前
【优选算法篇】踏入算法的深邃乐章:滑动窗口的极致探秘
开发语言·数据结构·c++·算法·面试·滑动窗口·哈希表
中间件XL20 天前
sentinel原理源码分析系列(六)-统计指标
sentinel·滑动窗口·指标统计
UestcXiye20 天前
Leetcode 第 359 场周赛题解
c++·leetcode·动态规划·滑动窗口·数据结构与算法
ZachOn1y23 天前
计算机网络:数据链路层 —— 可靠传输服务
网络·计算机网络·滑动窗口·数据链路层·可靠传输·超时重传
Espresso Macchiato25 天前
Leetcode 3316. Find Maximum Removals From Source String
leetcode·动态规划·leetcode medium·leetcode 3316·leetcode双周赛141
Espresso Macchiato25 天前
Leetcode 3321. Find X-Sum of All K-Long Subarrays II
leetcode·滑动窗口·leetcode hard·leetcode 3321·leetcode周赛419
初晴~1 个月前
【网络原理】TCP协议提高效率的秘密-滑动窗口机制
服务器·网络·c++·python·网络协议·tcp/ip·滑动窗口