首页 > 其他分享 >AcWing 799. 最长连续不重复子序列

AcWing 799. 最长连续不重复子序列

时间:2023-02-10 17:37:00浏览次数:46  
标签:int res 重复子 799 ++ 序列 -- 单调 AcWing

(双指针算法优化)思路:

  1. 暴力解法:
for(int i = 0; i < n; i ++)
    for(int j = 0; j <= i; j ++)
        check(i , j);
  1. 算法优化:找到某种性质,尤其注意解题过程中存在的单调性
for(int i = 0, j = 0; i < n; i ++){
    while(j < i && check(i , j)) j ++;
    //每道题的具体解题逻辑
}

在本题中存在的单调性:每加入一个a[i],j不变或j++,其中[j, i]为当前在i不动的情况下的最长子序列;若存在j--,则[j--, i]满足单词子序列与[j, i]矛盾,故单调性存在。
代码:

#include<iostream>

using namespace std;

const int N = 100010;
int n;
int a[N],s[N];

int main(){
    scanf("%d",&n);
    for(int i = 0; i < n; i++) scanf("%d",&a[i]);
    int res = 0;
    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);
    }
    printf("%d\n", res);
    return 0;
}

标签:int,res,重复子,799,++,序列,--,单调,AcWing
From: https://www.cnblogs.com/gaoweiextraordinary/p/17109747.html

相关文章

  • 【AcWing】103. 电影(离散化)
    problem莫斯科正在举办一个大型国际会议,有n个来自不同国家的科学家参会。每个科学家都只懂得一种语言。为了方便起见,我们把世界上的所有语言用1到109之间的整数编号。在会议......
  • LeetCode在排序数组中查找元素的第一个和最后一个位置 AcWing 789. 数的范围(/二分查找
    原题解相关内容辨析及不完整的二分归类题目约束题解y总有相关视频讲解(付费版)classSolution{public:vector<int>searchRange(vector<int>&nums,int......
  • AcWing整数二分算法模板
    原链接boolcheck(intx){/*...*/}//检查x是否满足某种性质//区间[l,r]被划分成[l,mid]和[mid+1,r]时使用:intbsearch_1(intl,intr){while(l<r......
  • AcWing 791. 高精度加法C++数组实现
    高精度加法a,b均为正整数#include<iostream>usingnamespacestd;constintN=100010;intA[N],B[N],C[N];intAdd(inta[],intb[],intc[],intcnt){......
  • Acwing 92
    回溯#include<iostream>usingnamespacestd;constintN=16;boolrecord[N];voidselection(intstart,intend){if(start>end){//到达上届f......
  • AcWing第 88 场周赛
    AcWing4800.下一个签到#include<bits/stdc++.h>usingnamespacestd;int32_tmain(){intx;cin>>x;autof=[](intx){set<int>a;......
  • Acwing - 算法基础课 - 笔记(数学知识 · 四)(补)
    数学知识(四)这一小节讲的是容斥原理和简单博弈论。容斥原理定义最基本的,假设有3个两两相交的圆。那么三个圆所覆盖的面积大小为如果是2个圆的话,那么其所覆盖的面积为如果是4......
  • AcWing第 89 场周赛
    AcWing4803.满足的数n=int(input())a=list(map(int,input().split('')))s=0foriina:s+=ires=0forxinrange(1,5+1):if(s......
  • AcWing 94. 递归实现排列型枚举
    顺序1:枚举每个数要放入哪个位置查看代码//暂时不想写顺序1:时间复杂度 顺序2:枚举每个位置要放哪个数相关题:AcWing1209.带分数查看代码#include<cstdio>#inc......
  • Acwing 周赛88 题解
    比赛链接A题题目描述给定一个整数\(x\),请你找到严格大于\(x\)且各位数字均不相同的最小整数\(y\)。\(1000\lex\le9000\)做法分析发现数据范围很小,那么我们可以直......