【Java】P1420 最长连号——(OJ:洛谷)
题目
题目来源:洛谷OJ
题目描述
输入 n个正整数,要求输出最长的连号的长度。
连号指从小到大连续自然数。
输入格式
第一行,一个整数 n。
第二行,n 个整数 ai,之间用空格隔开。
输出格式
一个数,最长连号的个数。
输入输出样例
输入 #1复制
10
3 5 6 2 3 4 5 6 8 9
输出 #1复制
5
说明/提示
数据规模与约定
对于 100% 的数据,保证1≤n≤104,1≤ai≤109。
思路
- 因为输入的数据非常大,所以不能采用数组的方式输入。
- 首先根据输入的n,来一个for循环,在输入下一个数的同时判断这个数和是否是上一个的数的下一位,在累计个数
Java源代码
package 入门3循环结构;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
/**
*@Title P1420最长连号.java
*@description TODO
*@time 2020年7月7日
*@author Baisu
*@version 1.0
*/
public class P1420最长连号 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StreamTokenizer st = new StreamTokenizer(br);
PrintWriter pr = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
st.nextToken();
int n = (int)st.nval;
int t [] = new int [2];
st.nextToken();
t[0] = (int)st.nval;
int s = 1;
int max = 0;
for(int i=1; i<n; i++) {
st.nextToken();
t[1] = (int)st.nval;
if(t[0]==t[1]-1) {
s++;
}
else {
if(s>max) {
max = s;
s = 1;
}
}
t[0] = t[1];
}
pr.println(max);
pr.flush();
}
}