解题思路:
采用的是计数排序的算法,先创建一个最大数量的数组记录出现个数,再判断出现0和2所对应的下标数,即为断号和重号。
判断0时,要判断当前数组值为0并且其前一项数组值不为0,这样才能保证该下标在票面范围内。
每轮结束时,判断是否已经确定a,b的值(断号和重号),即可退出循环。
参考代码:
import java.util.*; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); input.nextLine(); long[] arr=new long[100000]; for(int i=0;i<n;i++) { Scanner sc=new Scanner(input.nextLine()); while(sc.hasNext()) { int num=sc.nextInt(); arr[num]++; } } int a=0,b=0; for(int i=2;i<100000;i++) { if(arr[i]==0 && arr[i-1]!=0) a=i; if(arr[i]==2) b=i; if(a!=0 && b!=0) break; } System.out.println(a+" "+b); } }
0.0分
1 人评分
简单的a+b (C++语言代码)浏览:864 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:609 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:557 |
哥德巴赫曾猜测 (C语言代码)浏览:2366 |
【亲和数】 (C语言代码)浏览:601 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:517 |
模拟计算器 (C++代码)浏览:820 |
杨辉三角 (C语言代码)浏览:484 |
钟神赛车 (C语言代码)浏览:608 |
输入输出格式练习 (C语言代码)浏览:851 |