作者 : Xia Xinyu
日期 : 2021-09-04

原题链接

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

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

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

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

数据范围
1≤n≤105
输入样例:

5
1 2 2 3 5

输出样例:

3

思路(双指针算法):首先初始化i和j两个指针(j为结果区间左边的指针,i为结果区间右边的指针),再初始化一个数组保存每个数字出现的次数,开始遍历数组,将当前数字的出现次数加1,若当前j,i维护的区间中a[i]出现的次数大于1,则将a[j]出现的次数减1,j指针右移,直到a[i]出现的次数小于1为止,最后输出i - j + 1的最大值即可。

举个栗子:求数组1 ,2,2,3,5的最长不包含重复的数的连续区间的长度。



代码:

import java.util.*;
public class Main{public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();int[] a = new int[100010];int[] s = new int[100010];for(int i = 0;i < n;i++) a[i] = in.nextInt();int ans = 0;for(int i = 0,j = 0;i < n;i++){s[a[i]]++;while(s[a[i]] > 1){ //说明:模版中while(j <= i && check(j,i))//由题意可知j > i 是check(j,i)一定为true,所以可以省略j <= is[a[j]]--;j++;}ans = Math.max(ans,i - j + 1);}System.out.println(ans);}
}

时间复杂度:O(n)

空间复杂度:O(1)

最长连续不重复子序列(双指针算法)相关推荐

  1. Acwing799. 最长连续不重复子序列[C++题解]:双指针算法O(n)

    双指针算法的核心思想是把for的两重循环,即复杂度为O(n2)O(n^2)O(n2)优化成O(n)O(n)O(n) 代码的逻辑如下 for(int i=0,j=0;i<n;i++){while( ...

  2. 799. 最长连续不重复子序列 【双指针经典板子题】

    https://www.acwing.com/problem/content/description/801/ 自己写的笨方法: #include<iostream> #include&l ...

  3. 最长连续不重复子序列

    我们今天来看下简单的一道题,题目如下: 题目描述 给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度. 输入格式 第一行包含整数n. 第二行包含n个整数(均在0~10000 ...

  4. 最长连续子序列偏移_最长连续不重复子序列

    /*

  5. 双指针算法及模板应用

    ⭐写在前面的话:本系列文章旨在复习算法刷题中常用的基础算法与数据结构,配以详细的图例解释,总结相应的代码模板,同时结合例题以达到最佳的学习效果.本专栏面向算法零基础但有一定的C++基础的学习者.若C+ ...

  6. 小米oj #4 最长连续数列

    小米oj #4 最长连续数列 题目链接 描述 输入一个乱序的连续数列,输出其中最长连续数列长度,要求算法复杂度为 O(n) . 输入 54,55,300,12,56 输出 3 输入样例 100,4,2 ...

  7. 20200606:最长连续序列(leetcode128)

    最长连续序列 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 本题没什么思路问题,主要是这个时间复杂度的约束.想到用set来实现. 注意先去重,也是一个想到set的角度 去重后找相邻的数,包 ...

  8. 最长连续子序列nlogn算法

    最长上升子序列(LIS)长度的O(nlogn)算法 标签: 算法search优化存储 2012-04-18 19:38 14031人阅读 评论(5) 收藏 举报  分类: 资料学习(15)  解题报告 ...

  9. 剑指offer48-最长不含重复字符的子字符串(双指针经典)

    问题描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 ...

  10. 5-3 最长连续递增子序列 (20分)

    5-3 最长连续递增子序列 (20分) 给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8 ...

最新文章

  1. pybind 回调 多线程 异常
  2. puppy linux不识别鼠标,不止于OS X!还有适用于Mac的八款替代操作系统
  3. linux之vifm和ranger操作文件管理器使用总结
  4. github 打不开_App更新不了? TF打不开? 试试这个
  5. Tell me why -- Declan Galbraith
  6. python输出用逗号隔开的数字_Python:从字符串中提取带有点和逗号的数字
  7. android.mk local_cppflags,android.mk中LOCAL_CFLAGS 介绍
  8. 基于麻雀优化的BP神经网络(分类应用) - 附代码
  9. php中的opendir函数,php中opendir函数用法实例
  10. OpenKG开源系列 | 面向知识的推理问答编程语言KoPL(清华大学)
  11. View之ExpandableLists
  12. CNI插件之bridge plugin
  13. 我,90后,从审计员到程序员,四年在南京买房
  14. 歌剧《猫》的经典唱段《memory》中英文对照
  15. 智慧街道(乡镇)二三维网格化管理系统
  16. 甘特图在项目管理中的应用
  17. 8.微信小程序-Mobx数据共享(类似vuex)
  18. 打印时中间空白,两边清楚
  19. 用Python完成一个汇率转换器
  20. 总是跳转到国内版(cn.bing.com)?New Bing使用全攻略

热门文章

  1. javascript的window.open()具体解释
  2. R语言学习笔记:简单的回归分析
  3. C#热血传奇游戏服务端再次开源更新
  4. 【sed 工具的使用】
  5. spring创建定时任务
  6. C语言的 typedef 关键字
  7. 微软切断XP供应 Vista成制造商惟一选择
  8. ZPCategory
  9. day4:单用户及救援模式及互相登录
  10. 004-Python内置数据结构-七种数据结构一览