剑指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]

运行结果

3
2
-1

你可能感兴趣的:(剑指offer第二版-53.3.数组中数值和下标相等的元素)