打印出失序的线程ID
题目描述
输入一个正整数n.表示接下来有n行数字,每行一个数字(不重复,可能无序),表示线程id,输出未出现的失序的线程ID
n的大小是小于等于2的32次方
示例
例如1:
输入(输入的线程ID不一定有序)
5
2
3
4
5
6
输出:
1
例如2:
输入:
4
1
2
3
4
输出:
5
Java代码
package ncompanydemos.p2_bytedance;
import java.util.Arrays;
import java.util.Scanner;
/**
* @author jiyongjia
* @create 2020/7/4 - 14:26
* @descp: 输入一个数n.表示接下来有n行数字,每行一个数字,表示线程id,输出未出现的失序的线程ID
*/
public class Exam01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int total = scanner.nextInt();
int[] arr = new int[total];
int cur;
for (int i = 0; i < total; i++) {
cur=scanner.nextInt();
arr[i] = cur;
}
//调用
int solve = solve(arr);
System.out.println(solve);
}
public static int solve(int[] arr){
//对数组排序、
Arrays.sort(arr);
//边界判断
if(arr.length!=1 && arr[0]!=1){
return 1;
}
int cur=0;
int next=0;
for (int i = 0; i < arr.length-1; i++) {
cur = arr[i];
next = arr[i+1];
if(next-cur==1){
continue;
}else{
return ++cur;
}
}
//边界判断
if(arr[arr.length-1]-arr[arr.length-2]==1){
return ++arr[arr.length-1];
}else{
return ++arr[arr.length-2];
}
}
}
测试输出
测试1:
输入:
5
2
3
1
6
4
输出:
5
测试2:
输入:
5
1
2
3
4
5
输出:
6
测试3: