题解 | #二分查找-II#

二分查找-II

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

此本仅用于本人记录

二分法,不解释。但是我许久没写二分法了都有点生疏了,start<=end和+1-1那里栽了一次。
另外令我印象深刻的是只要知道题目答案的范围和验证答案的方法,就可以立即使用二分法查找出答案,什么题目原理都不用找的哈哈哈。

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 如果目标值存在返回下标,否则返回 -1
     * @param nums int整型一维数组 
     * @param target int整型 
     * @return int整型
     */
    public int search (int[] nums, int target) {
        // write code here
        int indexPossible = mediumQuire(nums,0,nums.length-1,target);
        if(indexPossible == -1){
            return -1;
        }
        else{
            while(indexPossible-1 >= 0 && nums[indexPossible] == nums[indexPossible-1]){
                indexPossible--;
            }
        }
        return indexPossible;
    }
    int mediumQuire(int[] nums,int start,int end,int target){
        while(start <= end){
            int medium = (start + end)/2;
            if(nums[medium] < target){
                start = medium+1; 
            }
            else if(nums[medium] > target){
                end = medium-1;
            }
            else if(nums[medium] == target){
                return medium;
            }
        }
        return -1;
    }
}
全部评论

相关推荐

jack_miller:杜:你不用我那你就用我的美赞臣
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务