从今天起,我将为大家分享一些我做过的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);
- }
- }
- }
转载于:https://blog.51cto.com/2950606/1189714