码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-05-10 22:01:26      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:判断   start   分析   java   一个   []   public   数组   star   

题目描述:

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

思路分析:

??由于是排序的且递增的数组的查找问题,那么我们考虑使用二叉查找法。假设我们某一步抵达了某个数字,且这个数字等于其在数组中的下标,那么我们就找到了答案。如果这个数字不等于其下标,那么我们判断,如果这个数字大于其下标,根据递增数组的性质,这个数字后面的数都大于其相应的下标,所以下一阶段我们在左段进行查找。如果这个数字小于其坐标,那么根据递增数组的性质,这个数字前面的数都小于其对应的下标,所以下一阶段在后半段进行查找。

代码:

public class Test{
    public int GetNumberSameAsIndex(int[]nums){
        if(nums.length==0||nums==null)
            return -1;
        int res=find(nums,0,nums.length-1);
        return res;
    }
    public int find(int []nums,int start,int end){
        int mid=(start+end)/2;
        int midnum=nums[mid];
        if(start<=end){
            if(midnum==mid){
                return mid;
            }else if(midnum>mid){
                end=mid-1;
            }else{
                start=mid+1;
            }
        }
        return find(nums,start,end);
    }
    
}

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

标签:判断   start   分析   java   一个   []   public   数组   star   

原文地址:https://www.cnblogs.com/yjxyy/p/10846886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!