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;}
}

源自:fzzf的博客


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部