其他分享
首页 > 其他分享> > 457. 经典二分查找问题

457. 经典二分查找问题

作者:互联网

457. 经典二分查找问题

 

在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回 -1。

样例

样例 1:

输入:nums = [1,2,2,4,5,5], target = 2

输出:1 或者 2

样例 2:

输入:nums = [1,2,2,4,5,5], target = 6

输出:-1

挑战

O(logn) 的时间

public class Solution {

    /**

     * @param nums: An integer array sorted in ascending order

     * @param target: An integer

     * @return: An integer

     */

    public int findPosition(int[] nums, int target) {

        // write your code here

        if (nums==null||nums.length==0)return -1;

            int low=0;

            int high=nums.length-1;

            while (low<=high){

                final int mid=(high+low)>>>1;

                final int midVal = nums[mid];

                if (midVal>target){

                    high=mid-1;

                }else if (midVal<target){

                    low=mid+1;

                }else {

                    return mid;

                }

               

            }

           return  -1;

    }

}

 

 

标签:二分,return,target,nums,int,mid,457,查找,low
来源: https://blog.csdn.net/xwdrhgr/article/details/116779275