数组中数值和下标相等的元素(Java)

数组中数值和下标相等的元素

题目:
假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请编程实现一个函数找出数组中任意一个数值等于其下标的元素。例如,在数组[-3, -1, 1, 3, 5]中,数字3和它的下标相等。
代码:

/**
 * @desc 数组中数值和下标相等的元素
 * @author zhaoliang
 * @date 20200416
 */

public class Main53_3 {
    //  数组中数值和下标相等的元素
    public static int findNum(int[] array){
        if (array.length == 0){
            return -1;
        }
       int l = 0;
       int r = array.length-1;
       while (l < r){
           int mid = (l + r) >> 1;

           if (mid == array[mid]){
               return mid;
           }
           if (mid < array[mid]){
               if (mid == 0){
                   return -1;
               }
               r = mid -1;
           }else if(mid > array[mid]){
               if (mid == array.length-1){
                   return -1;
               }
               l = mid +1;
           }
       }
       if (l == array[l]){
           return l;
       }
       return -1;
    }

}
发布了71 篇原创文章 · 获赞 0 · 访问量 866

猜你喜欢

转载自blog.csdn.net/sinat_40968110/article/details/105551703