劍指offer第二版-53.3.數組中數值和下標相等的元素

本系列導航:劍指offer(第二版)java實現導航帖

面試題53.3:數組中數值和下標相等的元素

題目要求:
假設一個單調遞增的數組里的每個元素都是整數且是唯一的。編寫一個程序,找出數組中任意一個數值等于其下標的元素。例如,輸入{-3,-1,1,3,5},輸出3。

解題思路:
很基本的二分查找。。。

package chapter6;

/**
 * Created with IntelliJ IDEA
 * Author: ryder
 * Date  : 2017/8/15
 * Time  : 17:24
 * Description:數組中數值和下標相等的元素
 **/
public class P267_IntegerIdenticalToIndex {
    public static int getNumberSameAsIndex(int[] data){
        if(data==null ||data.length==0)
            return -1;
        int left = 0,right = data.length-1;
        if(data[left]>0||data[right]<0)
            return -1;
        int mid;
        while (left<=right){
            mid = left+((right-left)>>1);
            if(data[mid]==mid)
                return mid;
            else if(data[mid]<mid)
                left = mid+1;
            else
                right = mid-1;
        }
        return -1;
    }
    public static void main(String[] args){
        System.out.println(getNumberSameAsIndex(new int[]{-3,-1,1,3,5})); //3
        System.out.println(getNumberSameAsIndex(new int[]{0,1,2,3,4}));   //0~4
        System.out.println(getNumberSameAsIndex(new int[]{4,5,6,7,8}));   //-1
    }
}

運行結果

3
2
-1
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容