【找出最长等值子数组】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
相关推荐
LadenKiller11 分钟前
近期AI量化辅助,工具重点要跟学习阶段变化
人工智能·python
白白白小纯41 分钟前
算法篇—链表的中间节点
c语言·数据结构·算法·leetcode
phltxy1 小时前
LangChain_Agent中间件实战
人工智能·python·深度学习·语言模型·中间件·langchain
Frostnova丶1 小时前
(19)LeetCode 54. 螺旋矩阵
算法·leetcode·矩阵
axinawang1 小时前
第14课:查找、统计、分割字符串
python
Frostnova丶1 小时前
(18)LeetCode 73. 矩阵置零
算法·leetcode·矩阵
倒流时光三十年1 小时前
第一阶段 02 · Mapping 与数据类型(text vs keyword 是重点)
后端·python·django
小大宇1 小时前
python蓝图、拦截器、异常处理、redis队列、线程池、控制台及日志文件输出
python
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-11 分段计算居民水费(C语言实现)
c语言·开发语言·算法
得物技术1 小时前
推荐系统体验的数字化突破:得物自动化评测平台的技术实践|AICon 文章整理
算法·架构·llm