java刷题--34在排序数组中查找元素的第一个和最后一个位置
Posted Anrys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java刷题--34在排序数组中查找元素的第一个和最后一个位置相关的知识,希望对你有一定的参考价值。
题目
代码
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] res = new int[] {-1, -1};
res[0] = binarySearch(nums, target, true);
res[1] = binarySearch(nums, target, false);
return res;
}
//leftOrRight为true找左边界 false找右边界
public int binarySearch(int[] nums, int target, boolean leftOrRight) {
int res = -1;//初始化
int left = 0, right = nums.length - 1;
while(left <= right) {
int mid = left + (right - left) / 2;
if(target < nums[mid]) //target在左边
right = mid - 1;
else if(target > nums[mid]) //target在右边
left = mid + 1;
else {
res = mid; //target在mid
if(leftOrRight)
right = mid - 1; //找到一个后就跳出
else
left = mid + 1; //关键处,最终让left right mid重合
}
}
return res;
}
}
结果
以上是关于java刷题--34在排序数组中查找元素的第一个和最后一个位置的主要内容,如果未能解决你的问题,请参考以下文章
力扣刷题:在排序数组中查找元素的第一个和最后一个位置(java实现)
力扣刷题:在排序数组中查找元素的第一个和最后一个位置(java实现)
力扣刷题:在排序数组中查找元素的第一个和最后一个位置(java实现)
力扣刷题:在排序数组中查找元素的第一个和最后一个位置(java实现)