搜索
您的当前位置:首页正文

二分查找之查找有序数组第一个出现的目标数值和最后出现的目标数值

来源:易榕旅网

题目

查找第一个重复元素的位置代码:

public int search (int[] nums, int target) {
       if(nums.length == 0) {
           return -1;
       }
        int begin = 0;
        int end = nums.length - 1;
        while(begin < end) {
            int mid = (begin + end) / 2;
            if(nums[mid] < target) {
                begin = mid + 1;
            } else {
                end = mid; 
            }
        }
        return nums[begin] == target ? begin : -1;
    }

查找重复元素最后一个位置的代码:(这段代码是在目标值存在的前提下)

  public int searchLast(int[] nums,int target) {
        int begin = 0;
        int end = nums.length-1;
        while(begin + 1 < end) {
            int mid = (begin + end) / 2;
            if(nums[mid] > target) {
                end = mid;
            } else {
                begin = mid;
            }
        }
        return nums[end] == target ? end: begin;
    }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top