P1420 最长连号(思路+代码详解)python实现

输入长度为 n 的一个正整数序列,要求输出序列中最长连号的长度。

连号指在序列中,从小到大的连续自然数。

输入格式

第一行,一个整数 n。

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

输出格式

一个数,最长连号的个数。

输入输出样例

输入 #1复制

10
1 5 6 2 3 4 5 6 8 9

输出 #1复制

5

说明/提示

数据规模与约定

对于 100% 的数据,保证1≤n≤10^{4},1≤ai​≤10^{9}

题目分析:目的求最长连号

1.连号:一个序列中从小到大的连续子列(即前一个元素与后一个元素相差1)

2.最长:一个序列中可能有多个连续的子列求最长的那一个

思路分析:详细思路在代码中这里给几处易错点,

1.一个序列可能本身全部连续,如(1,2,3,4,5,6)

2.一个序列本身彼此之间均不连续,如(1,3,5,7,9,11)

代码如下:

n=int(input())
s=list(map(int,input().split()))
cnt=1#cnt用于求每个连续的子列的长度
mcnt=1#用于保存连续子列的最长长度
for i in range(n-1):#循环到n-2是为了保证s[i+1]有意义
    if s[i]+1==s[i+1]:#如果前一个加1等于后一个,那么cnt+1
        cnt+=1
    else:#如果不相等让cnt的值变为1
        cnt=1
    if cnt>mcnt:#更新最大连续子列的值
        mcnt=cnt
print(mcnt)

加油!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值