Leetcode34题,寻找子元素位置
Leetcode34:在排序数组中查找元素的第一个位置和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。要求时间复杂度为logn。
主要思想的话就是寻找大于等于target值在数组中出现的位置,之后再寻找target+1出现的位置,进行判断即可,题解如下:
class Solution {
public int[] searchRange(int[] nums, int target) {
int l = searchBinary(nums,target);
int r = searchBinary(nums,target + 1);
if(l == nums.length || nums[l] != target){
return new int[]{-1,-1};
}
return new int[]{l,r - 1};
}
public int searchBinary(int[] nums,int target){
int len = nums.length;
int l = 0;
int r = len;
while(l < r){
int mid = (l + r) >> 1;
if(nums[mid] >= target){
r = mid;
}else{
l = mid + 1;
}
}
return l;
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 fzzf!
评论
ValineDisqus