binary search

来源:互联网 发布:vmware 桥接网络 编辑:程序博客网 时间:2024/05/17 02:33

容易 二分查找

28%
通过

给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1

您在真实的面试中是否遇到过这个题? 
Yes
样例

在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2

挑战

如果数组中的整数个数超过了2^32,你的算法是否会出错?

class Solution {    /**     * @param nums: The integer array.     * @param target: Target to find.     * @return: The first position of target. Position starts from 0.     */    public int binarySearch(int[] nums, int target) {        int low = 0;        int high = nums.length - 1;        while(low+1<high){            int mid = low + (high-low)/2;            if(target>nums[mid]){                low = mid;            }else if(target<nums[mid]){                high = mid;            }else{                high = mid;            }        }        if(nums[high] == target){            return high;        }        if(nums[low] == target){            return low;        }                return -1;    }}




0 0