首页 > 编程语言 >双指针算法-最长不重复子序列

双指针算法-最长不重复子序列

时间:2023-12-24 09:04:23浏览次数:27  
标签:int res 重复子 cin ++ 算法 指针

思路

这里的 i 才是主要的遍历指针, j 是用来剔除元素以满足题目要求的。

image-20231224065535487

代码

#include<iostream>
using namespace std;

const int N = 1e5 + 10;

int n, res;
int a[N], s[N];


int main() {
    cin >> n;
    for (int i = 0; i < n; i++) cin >> a[i];
    
    for (int i = 0, j = 0; i < n; i++) {
        s[a[i]]++;
        while (s[a[i]] > 1) {
            s[a[j]] --;
            j++;
        }
        
        res = max(res, i - j + 1);
    }
    
    cout << res << endl;
    return 0;
}

标签:int,res,重复子,cin,++,算法,指针
From: https://www.cnblogs.com/vLiion/p/17923962.html

相关文章

  • 详解十大经典排序算法(六):快速排序(QuickSort)
    算法原理分区(Partition):选择一个基准元素,将数组分为两个子数组,小于基准的放在左边,大于基2准的放在右边。递归排序:对左右两个子数组分别进行快速排序。合并:不需要实际的合并操作,因为在分解和递归排序阶段已经完成了排序。算法描述快速排序是一种基于分治思想的高效排序算法,由英国......
  • 算法学习笔记五一快速排序
    目录什么是快速排序算法思想示例代码什么是快速排序快速排序(Quicksort)是一种常用的排序算法,它的基本思想是通过分治的策略将一个大问题划分为多个小问题来解决。它的平均时间复杂度为O(nlogn),最坏情况(有序情况)为O(n^2)。是一种高效的排序算法。算法思想选择一个基准元素(pivot......
  • PTA|C语言|指针
    计算最长的字符串长度本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。函数接口定义:intmax_len(char*s[],intn);其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。裁判测试程序样例:#include<stdio.h>#include<string.h>#include......
  • 代码随想录算法训练营第十一天|20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150
    一、20.有效的括号题目链接:LeetCode20.有效的括号学习前:思路:当前元素为左括号,直接入栈当前元素为右括号,若找到对应的左括号匹配,则循环继续;反之返回false若栈为空,返回true;反之false时间复杂度:O(n)空间复杂度:O(n)学习后:采用入栈右括号,降低复杂度。即当遇到左......
  • 字节国际化TnS算法实习的碎碎念
    Motivation在保研之后,我和南大的导师投了一篇个性化联邦学习的CVPR作为毕设。之后感觉就没什么事了,于是想着找个实习吧,第一个想法就是去字节实习,也只投了字节(别学我,还是多投一些哈哈,找不到实习就g了)。面试过程因为是日常实习,所以就是两轮技术加一轮hr面,虽然师兄说比较简单,但我......
  • 关于Secure Hash Algorithm加密算法
    一、概述SHA(SecureHashAlgorithm)加密算法是一种广泛应用的密码散列函数,由美国国家安全局(NSA)设计,用于保障数据的安全性和完整性。SHA算法经历了多个版本的更新,目前主要应用于各种网络安全和数据加密领域。SHA在线加密|一个覆盖广泛主题工具的高效在线平台(amd794.com)http......
  • 机器学习-无监督机器学习-kmeans衍生的算法-18
    目录1.k-Medoids2.二分KMEANS3.KMeans++4.elkanKMeans5.minbatchKMeans算法6.小结:1.k-Medoids之前的kmeans算法对于异常点数据特别敏感,更新中心点的时候,是对于该簇的所有样本点求平均,这种方式对于异常样本特别敏感,kmedoids算法克服这个问题,实现方式所有属于该簇的样......
  • 二叉树的查找算法的实现与运用
    二叉树的查找算法的实现与运用这里我们需要运用到之前二叉树建立的知识点每一次调用Insert函数时,都会开辟一个BiNode类型的空间,同时递归调用。其次,我们在建立平衡二叉树时,当前节点的左结点小于该结点,当前节点的右结点大于该结点,所以,我们在递归之前添加了一个判断条件。最后,Inser......
  • Python算法——树的直径
    Python中的树的直径算法详解树的直径是树中任意两个节点之间最长路径的长度。在本文中,我们将深入讨论树的直径问题以及如何通过深度优先搜索(DFS)算法来解决。我们将提供Python代码实现,并详细说明算法的原理和步骤。树的直径树的直径定义为树中任意两个节点之间最长路径的长度。这个......
  • 【转载】内存基本概念-伙伴(Buddy)算法
    简介​在Linux系统中,内存的分配与回收速率直接影响系统的存取效率。当内核频繁请求和释放不同大小的一组连续页框时,会导致许多外部空闲碎片,造成空间的浪费。使用伙伴算法可以有效地缓解该问题。伙伴关系机制是操作系统中的一种动态存储管理算法。在进行内存分配时,该算法通过......