LeetCode34Find First and Last Position of Element in Sorted Array

    xiaoxiao2023-10-24  162

    题目:

           Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the target is not found in the array, return [-1, -1].

           Example 1:

                  Input: nums = [5,7,7,8,8,10], target = 8

                  Output: [3,4]

           Example 2:

                  Input: nums = [5,7,7,8,8,10], target = 6

                  Output: [-1,-1]

    public class SearchRange { public static int[] searchRange(int[] nums, int target) { //定义返值 int[] range = {-1, -1}; //处理特殊情况:数组为null,数组为空 if(nums == null || nums.length == 0) return range; //处理业务逻辑 int l = 0; int r = nums.length - 1; while(l <= r ){ int mid = l + (r - l >> 1); if(target > nums[mid]) l = mid + 1; else if(target < nums[mid]) r = mid - 1; //找到目标target //由于是有序数组,相同值只会是一个连续区域,以当前mid位置为出发点,分别向左向右寻找边界,这两个边界就是所求 else{ l = mid; r = mid; while(l - 1 >= 0 && nums[l - 1] == target) l--; while(r + 1 < nums.length && nums[r + 1] == target) r++; range[0] = l; range[1] = r; return range; } } return range; } public static void main(String[] args) { int[] nums = {5,7,7,8,8,10}; int target = 5; System.out.println(Arrays.toString(searchRange(nums, target))); } }

     

     

     

    最新回复(0)