首页 > 试题广场 >

【模板】双指针

[编程题]【模板】双指针
  • 热度指数:121055 时间限制: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
头像 Silencer76
发表于 2025-08-12 16:46:08
题目链接 【模板】双指针 题目描述 给定一个长度为 的数组 ,请找出所有最长的连续区间,要求区间中的元素两两不同。 输入: 第一行输入一个整数 ,代表数组元素的数量。 第二行输入 个整数,代表数组 。 输出: 第一行输出一个整数,代表满足条件的最长区间的数量。 接下来若干行,每行输出两个整 展开全文
头像 非特约评论员胡锡退
发表于 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 展开全文