[程式設計題] 打印出失序的執行緒ID--位元組跳動筆試題
阿新 • • 發佈:2020-07-04
打印出失序的執行緒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: