AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

AcWing 799. 最长连续不重复子序列——一种慢指针不用遍历的实现思路    原题链接    简单

作者: 作者的头像   Apeiron ,  2021-01-14 19:14:54 ,  阅读 14


1


核心思路

不记录出现频率,而是记录每个数k最后出现的位置index[k],若index[k]大于等于慢指针start,则令start=index[k]+1,并令index[k]值为快指针i,省略慢指针遍历的步骤
其他思路与y总讲解一致,这里不再赘述

#include<iostream>
#include<algorithm>

using namespace std;

const int N = 1e5 + 10;

int index[N];

int main() {
    int n, temp, start = 1;

    int maxLen = 0, curLen = 0;

    cin >> n;

    for(int i = 1; i <= n; i++) {
        cin >> temp;
        if(index[temp] >= start) {
            start = index[temp] + 1;
            index[temp] = i;

            maxLen = max(maxLen, curLen);

            curLen = i - start + 1;
        } else {
            index[temp] = i;
            curLen++;
        }
    }

    maxLen = max(maxLen, curLen);

    cout << maxLen;
    return 0;
}

0 评论

你确定删除吗?

© 2018-2020 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息