当前位置:   article > 正文

LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array

find first and last position of element in sorted array

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

你的算法时间复杂度必须是 O(log n) 级别。

如果数组中不存在目标值,返回 [-1, -1]

示例 1:

输入: nums = [5,7,7,8,8,10],target = 8
输出: [3,4]

示例 2:

输入: nums = [5,7,7,8,8,10], target = 6
输出: [-1,-1]
  1. public class Solution {
  2. public int[] searchRange(int[] nums, int target) {
  3. int[] result = new int[2];
  4. result[0] = getBoundRange(nums, 0, nums.length-1, target, true);
  5. result[1] = getBoundRange(nums, 0, nums.length-1, target, false);
  6. return result;
  7. }
  8. public int getBoundRange(int[]nums, int l, int r, int target, boolean left){
  9. if(l>r){
  10. return -1;
  11. }else{
  12. int m = (l+r)/2;
  13. if(nums[m]==target){
  14. if(left){
  15. if(m==0 || nums[m-1]<target) return m;
  16. else return getBoundRange(nums, l, m-1, target, left);
  17. }else {
  18. if(m==nums.length-1 || target<nums[m+1]) return m;
  19. else return getBoundRange(nums, m+1, r, target, left);
  20. }
  21. }else if (nums[m]>target) {
  22. return getBoundRange(nums, l, m-1, target, left);
  23. }else {
  24. return getBoundRange(nums, m+1, r, target, left);
  25. }
  26. }
  27. }
  28. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/598532
推荐阅读
相关标签
  

闽ICP备14008679号