【找出最长等值子数组】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
相关推荐
小白学大数据1 分钟前
Python 多线程爬取社交媒体品牌反馈数据
开发语言·python·媒体
吴秋霖2 分钟前
profileData纯算逆向分析
算法·设备指纹·反爬虫技术
sprintzer2 分钟前
11.26-12.05力扣栈刷题
算法·leetcode·职场和发展
HAPPY酷13 分钟前
压缩文件格式实战速查表 (纯文本版)
python
sin_hielo15 分钟前
leetcode 3578
数据结构·算法·leetcode
祝余Eleanor30 分钟前
Day 31 类的定义和方法
开发语言·人工智能·python·机器学习
背心2块钱包邮31 分钟前
第6节——微积分基本定理(Fundamental Theorem of Calculus,FTC)
人工智能·python·机器学习·matplotlib
larance38 分钟前
修改jupyterlab 默认路径
python
ShiMetaPi44 分钟前
SAM(通用图像分割基础模型)丨基于BM1684X模型部署指南
人工智能·算法·ai·开源·bm1684x·算力盒子
前端小白在前进1 小时前
力扣刷题:无重复字符的最长子串
算法·leetcode·职场和发展