從今天起,我將爲大家分享一些我做過的java面試題,每篇一道,希望對想要去面試的朋友或是想要多學學的朋友有幫助,歡迎探討,最好經過大家討論能找到最有方式。(如有不好之處,歡迎拍磚)
- /**
- * 面試題之一:
- * 昨天面試時,看到一個面試題,他是這麼問的,有一個已經排好序的數組,現在輸入一個數
- * 問,現在要你編寫一個函數,去得到這個數的索引.\
- * 以下爲我改進過的答案,如有更好的,歡迎探討。
- */
- public class Problem1ArrayIndex {
- public static void main(String[] args) {
- int[] testArrays = {1,2,3,4,5,10,20,30};
- int result = getIndex(testArrays,0,testArrays.length-1,30);
- System.out.println(result);
- }
- public static int getIndex(int[] testArrays, int startIndex , int endIndex,int inputNumber){
- // 檢測起始索引是否爲爲我們所需要的
- if(inputNumber == testArrays[startIndex])
- return startIndex;
- // 檢測終止索引是否爲我們所要的
- if(inputNumber == testArrays[endIndex])
- return endIndex;
- // 校驗是否這個數存在在數組中,如果不存在,返回Integer.MAX_VALUE
- if(testArrays[endIndex]<inputNumber || testArrays[startIndex] > inputNumber || endIndex - startIndex == 1){
- return Integer.MAX_VALUE;
- }
- // 以下操作時求出中間索引
- int temp = endIndex + startIndex;
- int tempIndex = temp%2 == 0 ? temp/2 :temp/2+1;
- // 遞歸索引
- if(inputNumber == testArrays[tempIndex]){
- return tempIndex;
- }else if(inputNumber < testArrays[tempIndex]){
- return getIndex(testArrays,startIndex,tempIndex,inputNumber);
- }else{
- return getIndex(testArrays,tempIndex,endIndex,inputNumber);
- }
- }
- }