蓝桥杯-PREV-5-错误票据
来源:互联网 发布:东莞网站关键词优化 编辑:程序博客网 时间:2024/05/16 19:39
题目不难,用一个数组或链表将这些数字存储起来,按从大到小排序,再进行一次遍历即可。主要难在读取数据这一步,我用的java语言,在读取数据的时候整数N占了一行,虽然有in.nextInt()读取过这个数字,但是并未跳转到下一行,需要在读取下一行票据ID号先执行一次in.nextLine()函数。然后对每一行读取到的数据用split()函数进行分割,再用Integer.parseInt(String s) 函数将字符串转化为 int 即可。代码如下:
import java.util.*;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n=in.nextInt();String s=in.nextLine();List<Integer>list=new ArrayList<>();for(int i=0;i<n;++i){s=in.nextLine();s.trim();String[]ss=s.split(" ");for(int j=0;j<ss.length;++j){list.add(Integer.parseInt(ss[j]));}}Collections.sort(list);int m=-1;n=-1;for(int i=0;i<list.size()-1;++i){int p=list.get(i),q=list.get(i+1);if(q-p==2){m=p+1;}else if(p==q){n=p;}if(m!=-1&&n!=-1){break;}}System.out.println(m+" "+n);}}
阅读全文