二分查找

二分查找-II

http://www.nowcoder.com/questionTerminal/4f470d1d3b734f8aaf2afb014185b395

public static int search(int[] nums, int target) {
    int left=0;
    int right=nums.length-1;
    int center;
    if(left>right||target<nums[left]||target>nums[right]){
        return -1;
    }
    while (left<=right){
        center=(left+right)/2;
        if(target==nums[center]){
            return select(nums,center);
        }else if(target<nums[center]) {
            right=center-1;
        }else {
            left=center+1;
        }
    }
    return -1;
}
public static int select(int [] nums,int center){
    for(int i=0;i<center;i++){
        if(nums[i]==nums[center]){
            return i;
        }
    }
    return center;
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务