给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。
输入格式
第一行包含整数 n。
第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。
输出格式
共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。
数据范围
1 ≤ n ≤ 105
输入样例:
5
1 2 2 3 5
输出样例:
3
#include<iostream>usingnamespace std;int n;int q[100010], s[100010];intmain(){
cin >> n;for(int i =0; i < n; i ++) cin >> q[i];int res =0;for(int i =0, j =0; i < n; i ++){
s[q[i]]++;while(s[q[i]]>1) s[q[j ++]]--;
res =max(res, i - j +1);}
cout << res;return0;}
#include<iostream>usingnamespace std;int n, m, x, t;int a[100010], b[100010];intmain(){
cin >> n >> m >> x;for(int i =0; i < n; i ++) cin >> a[i];for(int i =0; i < m; i ++) cin >> b[i];for(int i =0, j = m -1; i < n; i ++){while(j >=0&& a[i]+ b[j]> x) j --;if(a[i]+ b[j]== x){
cout << i <<" "<< j;break;}}return0;}
给定一个长度为 n 的整数序列 a1,a2,…,an 以及一个长度为 m 的整数序列 b1,b2,…,bm。
请你判断 a 序列是否为 b 序列的子序列。
子序列指序列的一部分项按原有次序排列而得的序列,例如序列 {a1,a3,a5} 是序列 {a1,a2,a3,a4,a5} 的一个子序列。
输入格式
第一行包含两个整数 n,m。
第二行包含 n 个整数,表示 a1,a2,…,an。
第三行包含 m 个整数,表示 b1,b2,…,bm。
输出格式
如果 a 序列是 b 序列的子序列,输出一行 Yes。
否则,输出 No。
数据范围
1 ≤ n ≤ m ≤ 105,
−109 ≤ ai,bi ≤ 109
输入样例:
3 5
1 3 5
1 2 3 4 5
输出样例:
Yes
#include<iostream>usingnamespace std;int n, m;int a[100010], b[100010];intmain(){
cin >> n >> m;for(int i =0; i < n; i ++) cin >> a[i];for(int i =0; i < m; i ++) cin >> b[i];int i =0;for(int j =0; j < m; j ++)if(i < n && a[i]== b[j]) i ++;if(i == n)puts("Yes");elseputs("No");return0;}