LintCode-简单 14.二分查找

14. 二分查找

中文English

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

样例

样例  1:
	输入:[1,4,4,5,7,7,8,9,9,10],1
	输出: 0
	
	样例解释: 
	第一次出现在第0个位置。

样例 2:
	输入: [1, 2, 3, 3, 4, 5, 10],3
	输出: 2

 

public 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) {
        // write your code here
        int min = 0;
        int max = nums.length;
        int mid;
        int i = -1;
        while(min <= max){
            mid = (min + max)/2;
            if(nums[mid] == target){
            i = mid;
            }
            if(nums[mid] >= target){
            max = mid - 1;
        }else{
            min = mid + 1;
           }
        }
        return i;
    }
}

 

上一篇:Xamarin C#ANDROID的ZXing.Mobile出现问题


下一篇:分享一个jQuery动态网格布局插件:Masonry(转)