首页 > 试题广场 >

数字序列

[编程题]数字序列
  • 热度指数:1786 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
一个由若干个取值范围在[1,2^31-1]的整数构成长度为N的数字序列,其中N<=5,000,000;求该数字序列上一段最小的连续区间的长度,要求该区间内正好包含了所有不同的数字,如果存在多个这样的区间,按照出现的顺序有序输出所有的区间起始和结束位置,序列的位置编号从1到N,其中最小的区间长度不会超过10,000。

输入描述:
第一行:N
第2至N+1行:每行1个数


输出描述:
第一行:最小的区间长度 区间个数X (以空格进行分隔)
第二行:X个区间的起始和结束位置,按照出现的顺序有序输出,多个区间之间以空格分隔,每个区间的输出格式如下所示:[start,end],最后以换行结尾
示例1

输入

10
1
1
3
4
6
6
5
1
3
3

输出

6 3
[2,7] [3,8] [4,9]
头像 bandiaoz
发表于 2024-12-29 01:26:59
解题思路 这是一个区间查找问题,需要找到包含所有不同数字的最小区间。具体要求: 序列中的数字范围在 找到最小的连续区间,使其包含所有不同的数字 如果有多个这样的区间,按照出现顺序输出所有区间 解决方案: 使用双指针(滑动窗口)技术 对原始数字进行离散化处理,减少空间占用 使用计数数组记录每个 展开全文
头像 神奇的我求offer
发表于 2025-07-06 19:27:59
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vector<int> arr(N+1); unordered_map&l 展开全文