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。

相关推荐
daily_233310 小时前
coding ability 展开第四幕(滑动指针——巩固篇)超详细!!!!
c++·算法·字符串·哈希算法·滑动窗口
daily_23335 天前
coding ability 展开第三幕(滑动指针——基础篇)超详细!!!!
android·开发语言·数据结构·c++·算法·滑动窗口
闻缺陷则喜何志丹12 天前
【二分查找、滑动窗口】P10389 [蓝桥杯 2024 省 A] 成绩统计|普及+
c++·算法·蓝桥杯·二分查找·滑动窗口·洛谷·成绩
WenGyyyL13 天前
蓝桥杯真题——近似gcd(很离谱!!!)
算法·leetcode·蓝桥杯·滑动窗口
源代码•宸1 个月前
Leetcode—487. 最大连续1的个数 II【中等】Plus
c++·经验分享·算法·leetcode·滑动窗口
神秘的t1 个月前
优选算法合集————双指针(专题二)
java·数据结构·算法·滑动窗口
L_M_TY1 个月前
G1. Yunli‘s Subarray Queries (easy version)
算法·stl·滑动窗口·离线查询
Dong雨2 个月前
力扣hot100-->滑动窗口、贪心
贪心·滑动窗口·力扣hot100
Espresso Macchiato2 个月前
Leetcode 3418. Maximum Amount of Money Robot Can Earn
leetcode·动态规划·leetcode medium·leetcode 3418·leetcode周赛432
w_outlier2 个月前
TCP__滑动窗口__拥塞控制
网络·网络协议·tcp/ip·滑动窗口·拥塞控制