【找出最长等值子数组】python

python 复制代码
class Solution:
    def longestEqualSubarray(self, nums: List[int], k: int) -> int:
        n=len(nums)
        if n<2:
            return n
        mx=1
        for i,num in enumerate(nums):
            error=0
            flag=1
            for j in range(i+1,n):
                if nums[j]==num:
                    flag+=1
                    mx=max(mx,flag)
                else:
                    error+=1
                    if error>k:
                        break
        return mx

暴力循环超时

使用双指针改造

python 复制代码
class Solution:
    def longestEqualSubarray(self, nums: List[int], k: int) -> int:
        d, ans = defaultdict(list), 1
        for i, x in enumerate(nums): d[x].append(i)
        for lst in d.values():
            i, j, n = 0, 0, len(lst)
            while i < n:
                while j < n and lst[j] - lst[i] <= j - i + k: j += 1
                ans, i = max(ans, j - i), i + 1
        return ans
相关推荐
wefg120 分钟前
【C++】智能指针
开发语言·c++·算法
程序员爱钓鱼21 分钟前
Python职业路线规划:从入门到高级开发者的成长指南
后端·python·trae
程序员爱钓鱼23 分钟前
Python 编程实战 · 进阶与职业发展:自动化运维(Ansible、Fabric)
后端·python·trae
rising start28 分钟前
二、python面向对象高级
开发语言·python
虎头金猫28 分钟前
随时随地处理图片文档!Reubah 加cpolar的实用体验
linux·运维·人工智能·python·docker·开源·visual studio
搂鱼11451429 分钟前
一类判断包含颜色整体的题目
算法
Yue丶越29 分钟前
【Python】基础语法入门(二)
android·开发语言·python
Demon--hx30 分钟前
[c++]string的三种遍历方式
开发语言·c++·算法
无敌最俊朗@1 小时前
力扣hot100 - 合并两个有序链表21
算法·leetcode·链表
墨染点香1 小时前
LeetCode 刷题【168. Excel 表列名称】
算法·leetcode·职场和发展