java面試題系列(1)

從今天起,我將爲大家分享一些我做過的java面試題,每篇一道,希望對想要去面試的朋友或是想要多學學的朋友有幫助,歡迎探討,最好經過大家討論能找到最有方式。(如有不好之處,歡迎拍磚)

  1. /**  
  2.  * 面試題之一:  
  3.  *     昨天面試時,看到一個面試題,他是這麼問的,有一個已經排好序的數組,現在輸入一個數  
  4.  *     問,現在要你編寫一個函數,去得到這個數的索引.\  
  5.  * 以下爲我改進過的答案,如有更好的,歡迎探討。  
  6.  */ 
  7. public class Problem1ArrayIndex {  
  8.       
  9.     public static void main(String[] args) {  
  10.         int[] testArrays = {1,2,3,4,5,10,20,30};  
  11.         int result = getIndex(testArrays,0,testArrays.length-1,30);  
  12.         System.out.println(result);  
  13.     }  
  14.       
  15.     public static int getIndex(int[] testArrays, int startIndex , int endIndex,int inputNumber){  
  16.         // 檢測起始索引是否爲爲我們所需要的  
  17.         if(inputNumber == testArrays[startIndex])  
  18.             return startIndex;  
  19.         // 檢測終止索引是否爲我們所要的  
  20.         if(inputNumber == testArrays[endIndex])  
  21.             return endIndex;  
  22.           
  23.         // 校驗是否這個數存在在數組中,如果不存在,返回Integer.MAX_VALUE  
  24.         if(testArrays[endIndex]<inputNumber || testArrays[startIndex] > inputNumber || endIndex - startIndex == 1){  
  25.             return Integer.MAX_VALUE;  
  26.         }  
  27.           
  28.         // 以下操作時求出中間索引  
  29.         int temp = endIndex + startIndex;  
  30.         int tempIndex = temp%2 == 0 ? temp/2 :temp/2+1;  
  31.           
  32.         // 遞歸索引  
  33.         if(inputNumber == testArrays[tempIndex]){  
  34.             return tempIndex;  
  35.         }else if(inputNumber < testArrays[tempIndex]){  
  36.             return getIndex(testArrays,startIndex,tempIndex,inputNumber);  
  37.         }else{  
  38.             return getIndex(testArrays,tempIndex,endIndex,inputNumber);  
  39.         }  
  40.     }  
  41. }  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章