最长连续不重复子序列python题解-双指针

   看了很久,发现这道题目应该是有些前提的,以至于我开始一直往错的方向去想,将题目大大复杂化了
在csdn上看了许多博客文章,终于在看到12235这道例题的答案是235才恍然大悟,反应过来。
这题很简单一直被连续(类似12345)再不重复所误导。实际上是连续不出现重复的序列(前提)
那么知道了前提,我们就讲下解题思路吧!

    首先需要知道本题是双指针思想:有一个i指针和一个j指针。i指针遍历整个序列(一直走在前面),我们把其称为快指针;j指针用来标记连续不重复子序列最前面的下标,
我们把其称为慢指针。快指针i不断前进,将每个数字存入对应的列表对应的位置s(s[i]表示数字s[i]出现的频率),快指针i每次移动一次更新res(最长连续不重复子序列长度)。当出现s[i]大于1,表示当前i下标和i-1位置出现重复,s[i]==s[i-1]。此时快指针i停止向前移动,慢指针需要移动当前位置,去掉重复,也就是s[q[j]]-=1,将出现重复之前的所有以经添加的数据删除,重新开始计算最长连续不重复子序列区间。

题目:

给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

输入格式
第一行包含整数n。

第二行包含n个整数(均在0~100000范围内),表示整数序列。

输出格式
共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。

数据范围
1≤n≤100000
输入样例:
5
1 2 2 3 5
输出样例:
3
 

 附上python源码:

n=int(input())
    # 序列
    q=list(map(int,input().split()))
    # 各个数字出现的频率序列
    s=[0 for i in range(100000)]
    res=0  #当前下标前的最长连续不重复序列的长度
    i=0
    j=0
    while i<n:
        s[q[i]]+=1
        while j<i and s[q[i]]>1:#出现重复
            s[q[j]]-=1          #因为出现重复,目的是为了让指针j移动至指针i,将重复之前的所有已添加的数据去除,重新开始计算最长连续不重复子序列区间
            j+=1
        res=max(res,i-j+1)
        i+=1
    print(res)

此篇有相应的图解可以参考:https://blog.csdn.net/qq_61607790/article/details/122798100icon-default.png?t=M85Bhttps://blog.csdn.net/qq_61607790/article/details/122798100

以下两篇对我的帮助非常大(可以参考学习):(91条消息) 基础算法-最长连续不重复子序列_ai_XZP_master的博客-CSDN博客_最长不重复子序列icon-default.png?t=M85Bhttps://blog.csdn.net/qq_27262727/article/details/104233554?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-104233554-blog-106222438.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-104233554-blog-106222438.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=4

 15.最长连续不重复子序列 - haust_fx - 博客园 (cnblogs.com)icon-default.png?t=M85Bhttps://www.cnblogs.com/fx1998/p/12824375.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OD流水线是一种用于目标检测的深度学习模型,主要用于在图像或视频中识别和定位物体。它通过将输入图像或视频分成小块,并对每个块进行分类和定位,从而实现目标检测的功能。 Python题解是指使用Python编程语言来解决OD流水线中的问题。Python是一种简单易学、功能强大的编程语言,因其易读性和丰富的库而受到广泛应用。 在OD流水线的Python题解中,一般会使用相关的Python库和工具来实现目标检测的各个步骤。首先,需要使用OpenCV或PIL库加载和处理输入的图像或视频数据。然后,需要使用一种深度学习框架,例如TensorFlow或PyTorch,加载预训练的OD模型。接下来,将输入的图像数据传入模型中进行推理,并获取每个目标的类别和位置信息。最后,可以根据需要对检测到的目标进行后续处理,如绘制边界框、标注类别等。 在OD流水线的Python题解中,还可以使用其他辅助工具和技术来提升检测性能。例如,可以使用图像增强技术来提高输入图像的质量,或者使用非极大值抑制算法来去除重叠的边界框。此外,还可以根据具体应用场景进行模型微调或优化,以提高模型在特定数据集上的检测准确率和速度。 总之,OD流水线的Python题解是一种使用Python编程语言实现目标检测的方法。通过使用相关的Python库和工具,结合深度学习模型和其他辅助技术,可以实现高效、精确的目标检测功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值