双指针

技术双指针 双指针双指针799. 最长连续不重复子序列
给定一个长度为 \(n\) 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。
输入格式
第一行包含整数 \(n\)。
第二行包含

双指针

双指针

799. 最长连续不重复子序列

给定长度为\(n\)的整数序列,请找出没有重复数字的最长连续间隔,并输出其长度。

输入格式

第一行包含整数\(n\)。

第二行包含\(n\)个整数(都在\ (0 \ sim10 5 \)的范围内),表示整数序列。

输出格式

一行包含一个整数,表示没有重复数字的最长连续间隔的长度。

数据范围

\(1n10^5\)

输入样例:

1 2 2 3 5

输出样例:

对于间隔\((i,j)\)、固定\(j\)和移动\(i\),维护间隔中的数字不重复。

时间复杂度:\(O(n)\)

代码

#includebits/stdc。h

使用命名空间标准;

int n,a[100005],CNT[100005];

int main()

{

scanf('%d ',n);

for(int I=1;I=n;i )scanf('%d ',a[I]);

int RES=0;

for(int i=1,j=1;I=n;(一)

{

CNT[a[I]];

while(jicnt[a[I]]1)CNT[a[j]]-;

res=max(res,I-j 1);

}

printf(“% d”,RES);

返回0;

}

800. 数组元素的目标和

给定两个按升序排列的有序数组和一个目标值。

数组下标从\(0\)开始。

请找出满足\(A[i] B[j]=x\)的数字对\((i,j)\)。

确保数据有唯一的解决方案。

输入格式

第一行包含三个整数\(n,m,x\),分别表示\(A\)、长度\(B\)和目标值\(x\)。

第二行包含代表数组的\(n\)个整数。

第三行包含代表数组的\(m\)个整数。

输出格式

一行,包含两个整数\(i\)和\(j\)。

数据范围

数组长度不超过\(10 ^ 5 \)。

同一数组中的元素不同。

\(1数组元素10 ^ 9 \)

输入样例:

4 5 6

1 2 4 7

3 4 6 8 9

输出样例:

1 1

对于固定\(i\),找出满足\(a[i] b[j]\leq x\)的\(j\)

时间复杂度:\(O(n ^ m)\)

代码

#includebits/stdc。h

使用命名空间标准;

int n,m,x,a[100005],b[100005];

int main()

{

scanf('%d%d%d ',n,m,x);

for(int I=1;I=n;i )scanf('%d ',a[I]);

for(int I=1;I=m;i )scanf('%d ',b[I]);

for(int i=1,j=m;I=n;(一)

{

而(j=1a[I]b[j]x)j-;

if(j=1a[i] b[j]==x)

printf('%d %d ',i-1,j-1);

}

返回0;

}

2816. 判断子序列

给定长度为\(n\)的整数序列\(a_1,a_2,…,a_n\)和长度为\(m\)的整数序列\(b_1,b_2,…,b_m\)。

请判断\(a\)序列是否是\(b\)序列的子序列。

子序列是指序列中的某些项目按原始顺序排列的序列。例如,序列\({a_1,a_3,a_5}\)是序列\({a_1,a_2,a_3,a_4,a_5}\)的子序列。

输入格式

第一行包含两个整数\(n,m\)。

第二行包含代表\(a_1,a_2,…,a_n\)的\(n\)个整数。

第三行包含代表\(b_1,b_2,…,b_m\)的\(m\)个整数。

输出格式

如果\(a\)序列是\(b\)序列的子序列,则输出一行“是”。

否则,输出否.

数据范围

\(1nm10^5\),

\(?10^9a_i,b_i10^9\)

输入样例:

3 5

1 3 5

1 2 3 4 5

输出样例:

时间复杂度:\(O(n ^ m)\)

代码

#includebits/stdc。h

使用命名空间标准;

int n,m,a[100005],b[100005];

int main()

{

scanf('%d%d ',n,m);

for(int I=1;I=n;i )scanf('%d ',a[I]);

for(int I=1;I=m;i )scanf('%d ',b[I]);

int j=1;

for(int I=1;I=m;(一)

{

if(j=nb[I]==a[j])j;

}

看跌期权(j==n1 ' Yes ' : ' No ');

返回0;

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/92784.html

(0)

相关推荐

  • Spring框架访问数据库的两种方式的小案例

    技术Spring框架访问数据库的两种方式的小案例 Spring框架访问数据库的两种方式的小案例1.1 以Xml的方式访问数据库的案例
    要以xml的方式访问数据库需要用到JdbcTemplate ,因为

    礼包 2021年10月19日
  • 上课用英语怎么说,上课和下课分别用英语怎么说

    技术上课用英语怎么说,上课和下课分别用英语怎么说一、“上课”的英语两种形式:go to class 上课用英语怎么说,give a lesson1、go to class
    英 [ɡəu tu: klɑ:s] 美 [ɡ

    生活 2021年10月29日
  • 第三人称单数加s规则,为什么动词单三的变化要直接加s

    技术第三人称单数加s规则,为什么动词单三的变化要直接加s主语为第三人称单数时第三人称单数加s规则,动词如果是一般现在时,不一定是直接加-s的,有一些动词是加-es的,也有的动词变化不规则。当主语是第三人称单数,时态是现在

    生活 2021年10月25日
  • 向心力公式,向心力和向心加速度的计算公式

    技术向心力公式,向心力和向心加速度的计算公式向心力:F=Mω²r v为线速度 单位m/s,ω为角速度 单位rad/s,m为物体质量 单位kg,r为物体的运动半径 单位m向心力公式。 向心加速度: a(n)=V²/r a(

    生活 2021年10月20日
  • 有草有水的寓意好的字,姓王想起一个有水有草的女孩名字

    技术有草有水的寓意好的字,姓王想起一个有水有草的女孩名字展开全部 王渃有草有水的寓意好的字, 王淓,两个字就行,以后名字都三个字的,两个字姓名吃香 PS,友情提醒,千万别采纳三个字的名字。。。。看到幼儿园,小学入学名单你

    生活 2021年10月24日
  • springboot如何使用拦截器判断是否登录

    技术springboot如何使用拦截器判断是否登录这期内容当中小编将会给大家带来有关springboot如何使用拦截器判断是否登录,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。spri

    攻略 2021年11月9日