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。

相关推荐
bohu8316 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
幼儿园口算大王4 天前
关于滑动窗口算法--最小替换字串长度
java·数据结构·算法·滑动窗口
DogDaoDao5 天前
leetcode 面试经典 150 题:长度最小的子数组
算法·leetcode·面试·双指针·滑动窗口·数据结构与算法·子数组
Espresso Macchiato8 天前
Leetcode 3388. Count Beautiful Splits in an Array
leetcode·z算法·leetcode medium·leetcode周赛428·leetcode 3388
GGBondlctrl9 天前
【Leetcode】滑动窗口算法-编程苍穹下划破数据暗夜的高效光弧
数据结构·算法·leetcode·滑动窗口·长度最小子数组·无重复字符长子串
呼啦啦啦啦啦啦啦啦1 个月前
刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)
算法·双指针·滑动窗口
做人不要太理性1 个月前
【算法一周目】滑动窗口(2)
c++·算法·leetcode·哈希算法·散列表·滑动窗口
一直学习永不止步1 个月前
LeetCode题练习与总结:至少有 K 个重复字符的最长子串--395
java·算法·leetcode·字符串·滑动窗口·哈希表·分治
Tisfy1 个月前
LeetCode 3255.长度为 K 的子数组的能量值 II:和官解思路不同的O(n)做法(附思考过程)
数据结构·算法·leetcode·题解·遍历·滑动窗口
GGBondlctrl2 个月前
【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!
网络·网络协议·tcp/ip·滑动窗口·流量控制·拥塞控制·tcp协议特性