首页 > 试题广场 >

【模板】双指针

[编程题]【模板】双指针
  • 热度指数:328957 时间限制:C/C++ 4秒,其他语言8秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}对于给定的长度为 n 的数组 \{a_1,a_2,\dots,a_n\} ,找出最长的区间,满足区间中元素两两不同
\hspace{15pt}如果有多个这样的区间,依次输出它们。

输入描述:
\hspace{15pt}第一行输入一个整数 n \left( 1 \leqq n \leqq 2 \times 10^5\right) 代表数组中的元素数量。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n \left( 0 \leqq a_i \leqq n \right) 代表初始数组。


输出描述:
\hspace{15pt}第一行输出一个整数 m \left( 1 \leqq m \leqq n \right) 代表满足条件的区间数量。
\hspace{15pt}此后 m 行,每行输出两个整数 l,r \left( 1 \leqq l \leqq r \leqq n \right) 代表满足条件的区间。本题没有 \sf SPJ ,请按照 l 递增的顺序输出。
示例1

输入

6
1 1 4 5 1 4

输出

3
2 4
3 5
4 6
头像 丨阿伟丨
发表于 2025-09-01 10:12:06
题目链接 【模板】双指针 题目描述 给定一个长度为 的数组,找出其中所有最长的、元素两两不同的连续子区间。 解题思路 这个问题要求我们找到所有最长的、不包含重复元素的子数组。这是一个典型的可以使用**双指针(滑动窗口)**技巧解决的问题。 我们使用两个指针, 和 ,来维护一个动态的、始终满足“元素 展开全文
头像 周康禧
发表于 2025-12-12 15:59:20
#include <bits/stdc++.h> const int N=2e5+10; const int inf = 0x3f3f3f3f; using namespace std; using ull = unsigned long long int; using ll = lon 展开全文
头像 Silencer76
发表于 2025-08-12 16:46:08
题目链接 【模板】双指针 题目描述 给定一个长度为 的数组 ,请找出所有最长的连续区间,要求区间中的元素两两不同。 输入: 第一行输入一个整数 ,代表数组元素的数量。 第二行输入 个整数,代表数组 。 输出: 第一行输出一个整数,代表满足条件的最长区间的数量。 接下来若干行,每行输出两个整 展开全文
头像 牛客754921490号
发表于 2025-12-20 18:49:26
#include <iostream> #include <vector> #include <unordered_set> #include <algorithm> using namespace std; int main() { int 展开全文
头像 小胡放轻松
发表于 2025-12-03 01:37:07
#include <iostream> #include <vector> #include <unordered_map> using namespace std; int main() { //读入数据 int n; cin > 展开全文
头像 牛客232360660号
发表于 2025-12-14 16:29:38
#include <iostream> #include <unordered_set> #include <vector> using namespace std; int main() { int n; cin >> n; 展开全文
头像 凶狠跑刀崽
发表于 2025-08-17 02:22:57
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new S 展开全文
头像 冷艳的西红柿刷牛客
发表于 2025-11-12 11:16:43
#include <iostream> #include <vector> #include <map> using namespace std; struct range { int start, end; range(int s, int e) : s 展开全文