First Occurrence Of Binary Search

和普通的binary search不同就是在处理找到等于target的数

首先要记录这个结果,然后我们现在其实是需要向左找,右边的数都不重要,因为我们要找最左出现的,我们就假设现在的情况是nums[mid] > target,所以high = mid - 1.如果找不到了,那么之前的结果就是最左侧的,否则就继续找。

 1     public int firstOccurence(int[] nums, int target) {
 2         int left = 0;
 3         int right = nums.length - 1;
 4         int res = -1;
 5         while(left <= right) {
 6             int mid = left + (right - left) / 2;
 7             if(nums[mid] == target) {
 8                 res = mid;
 9                 right = mid - 1;
10             } else if(nums[mid] < target) {
11                 left =  mid + 1;
12             } else {
13                 right = mid - 1;
14             }
15         }
16         return res;
17     }

 

posted @ 2016-08-30 07:05  warmland  阅读(212)  评论(0编辑  收藏  举报