标签:
某涉密单位下发了某种票据,并要在年终全部收回。
每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。
因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。
你的任务是通过编程,找出断号的ID和重号的ID。
假设断号不可能发生在最大和最小号。
要求程序首先输入一个整数N(N<100)表示后面数据行数。
接着读入N行数据。
每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。
每个整数代表一个ID号。
要求程序输出1行,含两个整数m n,用空格分隔。
其中,m表示断号ID,n表示重号ID
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List; 4 import java.util.Scanner; 5 6 public class Main { 7 8 public static void main(String[] args) { 9 Scanner in = new Scanner(System.in); 10 int n = in.nextInt(); 11 String numline[] = new String[n]; 12 in.nextLine(); 13 for (int i = 0; i < n; i++) { 14 numline[i] = in.nextLine().trim(); 15 } 16 List<Integer> nums = getNums(numline); 17 Collections.sort(nums); 18 int d = getDuan(nums); 19 int c = getChong(nums); 20 System.out.println(d + " " + c); 21 } 22 23 private static int getChong(List<Integer> nums) { 24 int c = -1; 25 int max = nums.size() - 1; 26 for (int i = 0; i < max; i++) { 27 if (nums.get(i).intValue() == nums.get(i + 1).intValue()) { 28 c = nums.get(i); 29 break; 30 } 31 } 32 return c; 33 } 34 35 private static int getDuan(List<Integer> nums) { 36 int d = -1; 37 int max = nums.size() - 1; 38 for (int i = 0; i < max; i++) { 39 if (nums.get(i).intValue() != nums.get(i + 1).intValue() 40 && nums.get(i) + 1 != nums.get(i + 1)) { 41 d = nums.get(i) + 1; 42 break; 43 } 44 } 45 return d; 46 } 47 48 private static List<Integer> getNums(String[] numline) { 49 List<Integer> nums = new ArrayList<Integer>(); 50 for (int i = 0; i < numline.length; i++) { 51 String n = numline[i]; 52 String[] ns = n.split(" "); 53 for (int j = 0; j < ns.length; j++) { 54 if ("".equals(ns[j])) 55 continue; 56 nums.add(Integer.parseInt(ns[j])); 57 } 58 } 59 return nums; 60 } 61 }
评测点序号 | 评测结果 | 得分 | CPU使用 | 内存使用 | 下载评测数据 |
---|---|---|---|---|---|
1 | 正确 | 50.00 | 171ms | 23.54MB | 输入 输出 |
2 | 正确 | 50.00 | 234ms | 23.39MB | 输入 输出 |
标签:
原文地址:http://www.cnblogs.com/wuqianling/p/5343295.html