1、邏輯推理題*20java
2、專業基礎*30編程
考的比較雜,可是基本上不難數組
一、各類排序的時間空間複雜度app
二、測試基本路徑測試
三、竟然考了編譯原理ui
四、閱讀代碼spa
五、比較簡單的基礎題code
3、編程題*2blog
一、給定字符串:包含‘0’~‘9’中任意個數的字符,輸出該字符串不能組成的最小正整數排序
輸入:123456789(字符串長度至少爲1)
輸出:10
解題思路:
首先,對各個數字出現的次數進行統計,用數組count[10]來記錄
其次,總共分爲兩種狀況:數字‘0’出現次數爲0和不爲0
count[0] = 0,又分爲兩種狀況:
1)數字1~9都出現:找出出現次數count[i]最少的數字,如有多個則取最小的數字i,輸出」iiiii「(次數爲count[i]次)+」0「
2)數字1~9沒有都出現:找出未出現的最小數字x,輸出x
count[0] != 0狀況
1)數字1~9都出現:找出出現次數最小且非0的數字x,輸出count[x]+1次x
2)數字1~9沒有都出現:找出次數爲0且最小的數字輸出
1 import java.util.Scanner; 2 3 4 public class Main { 5 public static void main(String[] args){ 6 Scanner sc = new Scanner(System.in); 7 String input = sc.next(); 8 int[] count = {0,0,0,0,0,0,0,0,0,0}; 9 10 for (int i = 0; i < input.length(); i++) { 11 count[input.charAt(i)-'0']++; 12 } 13 //找出出現次數最少且最小的數字 14 int min = 10,t=0,sum = 0; 15 for(int i = 1 ;i<count.length;i++) 16 { 17 if (count[i]!=0) sum++; 18 if(min>count[i]) { 19 min = count[i]; 20 t = i; 21 } 22 } 23 if(sum == 0) 24 { 25 System.out.println("1"); 26 return; 27 } 28 //無0的狀況 29 StringBuilder str = new StringBuilder(); 30 if(count[0]==0) { 31 if(sum == 9) { 32 int k = count[t]; 33 while(k>0) { 34 str.append(t); 35 k--; 36 } 37 str.append(0); 38 System.out.println(str); 39 } 40 else 41 System.out.println(t); 42 } 43 //有0的狀況 44 else { 45 if(sum == 9) { 46 int k = count[t]+1; 47 while(k>0) { 48 str.append(t); 49 k--; 50 } 51 System.out.println(str); 52 } 53 else System.out.println(t); 54 } 55 } 56 57 }
二、給一個圓,在圓上取n個點,每次取兩個點連線,不能相交,最多能連多少條線?
輸入:n(點的個數)
輸出:x(最多能連多少條線)
2*n-3便可得