当前位置: 首页 > news >正文

双指针专题2:最长连号

描述

输入长度为n的一个正整数序列,要求输出序列中最长连号的长度连号指在序列中,从小到大的连续自然数

输入描述

第一行,一个整数n。
第二行,n个整数ai​,之间用空格隔开

输出描述

一个数,最长连号的个数

实际上可以利用动态规划:

#include <bits/stdc++.h>
using namespace std;
struct node{
	int num,sum;
}a[10010];
bool cmp(node a,node b){
	return a.sum<b.sum; 
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>a[i].num;
    	a[i].sum=1;
	}
	for(int i=2;i<=n;i++){
		if(a[i].num==a[i-1].num+1){
			a[i].sum=a[i-1].sum+1;
		}
	}
	sort(a+1,a+n+1,cmp);
	cout<<a[n].sum;
}

但用双指针更加方便:

#include <bits/stdc++.h>
using namespace std;
int a[10010];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int ans=0;
	int r=1,l=1;//注意从0开始还是1开始
	while(r<=n){//个人建议直接while循环嵌套,不用for 
		if(a[r]!=a[r-1]+1){
			l=r;
		}
		int cnt=r-l+1;
		ans=max(ans,cnt);
		r++;
	}
	cout<<ans;
    return 0;
}

相关文章:

  • 【界面黑科技->构建异形不规则动态界面应用程序】
  • Kotlin 2.1.0 入门教程(二十)扩展
  • 使用grafana v11 建立k线(蜡烛图)仪表板
  • 两个实用且热门的 Python 爬虫案例,结合动态/静态网页抓取和反爬策略,附带详细代码和实现说明
  • GoC题解(21) 725.画迷宫(下册第4课)
  • 一场因软件技术窃取引发的法律风暴
  • 2、树莓派5第一次开机三种方式:使用外设 / 使用网线 / 使用wifi
  • Matlab离线安装硬件支持包的方法
  • 《代码随想录》刷题笔记——回溯篇【java实现】
  • WEB安全--SQL注入--floor报错注入
  • 数据结构与算法-栈与队列的应用递归表达式求值
  • 当扩展屏显示【输入不支持】怎么解决?!
  • 当Ollama遇上划词翻译:我的Windows本地AI服务搭建日记
  • 一些常用的Yum源
  • 项目版本号生成
  • 嵌入式玩具--无人机字幕
  • 【C++】32.C++11​(4)
  • 了解module_driver宏
  • Flask中获取请求参数的一些方式总结
  • 什么是GraphQL?
  • 当番茄霸总遇上晋江古言,短剧IP小变局
  • 商务部新闻发言人就出口管制管控名单答记者问
  • 博柏利上财年营收下降17%,计划裁员1700人助推股价涨超18%
  • 外国游客“在华扫货”热:“带空箱子到中国!”
  • 中国潜水救捞行业协会发布《呵护潜水员职业健康安全宣言》
  • 淡马锡辟谣:淡马锡和太白投资未在中国销售任何投资产品或金融工具