双指针

1,双指针的用途就是

a,有的是快慢指针操作

b,可以用来维护一段区间

2,双指针感觉没有模板,比较灵活

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//这个题就是找出最小不重复区间
#include <bits/stdc++.h>

using namespace std;

using ll = long long;

const int N = 1e5 + 10;

int a[N], tmp[N];

int main() {

ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

int t;

cin >> t;

while (t--) {

int n;

cin >> n;

memset(tmp, 0, sizeof(int) * (n + 1));

for (int i = 1; i <= n; i++) {

cin >> a[i];

}

ll ans = 0;

int j = 0;

for (int i = 1; i <= n; i++) {//双指针,

while (j < n && !tmp[a[j + 1]]) { //前一个不重复

tmp[a[++j]]++; //把前面的加起来

}

ans = max(ans, j - i + 1ll); //说明重复了

tmp[a[i]]--;

}

cout << ans << '\n';

}

}

双指针
https://ljw030710.github.io/2023/09/26/双指针/
Author
iolzyy
Posted on
September 26, 2023
Licensed under