AcWing 1204. 错误票据
原题链接
简单
作者:
duddudteng
,
2023-02-06 10:02:18
,
所有人可见
,
阅读 120
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main{
public static void main(String[] args) throws NumberFormatException, IOException {
/*
* 使用InputStreamReader将System.in转换为字符流,再使用BufferedReader整行读入
* 注意Scanner和缓冲流不要混用,可能出现问题
* 第一行表示数据行数,使用trim()方法去掉字符串前后空格后转换为int类型
* 之后读入n行数据,使用split()方法将数据按照空格分割,存入String[]数组中
* 注意空格可能有一个,也可能有多个,所以最好使用正则表达式
* 接下来需要将String数组的数据转换为int类型,由于长度不确定,所以我们使用List集合来存储转换后的数据
* 之后将list集合排序
* 断号:arr[i-1]+2 == arr[i]
* 重号:arr[i-1] == arr[i]
* 注意比较的时候要用equals()方法,因为集合中存放的是Integer类型,-127到128之间可以用==,超过这个范围比较的就是对象的地址了
*/
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(bf.readLine().trim()); //行数
List<Integer> list = new ArrayList<>();
while(num-- > 0){ //接收数据
String[] s = bf.readLine().split("\\s+"); //按照空格切分
for(int i = 0; i < s.length; i++){ //转换成int类型存储到List集合中
list.add(Integer.parseInt(s[i]));
}
}
int m = 0; //断号
int n = 0; //重号
Collections.sort(list); //排序
for(int i = 1; i < list.size(); i++){
if((list.get(i)).equals(list.get(i-1)+2)){ //断号
m = list.get(i) - 1;
}
if(list.get(i-1).equals(list.get(i))){ //重号
n = list.get(i);
}
}
System.out.println(m + " " + n);
}
}