Medium 34题 Search for a Range

    xiaoxiao2023-03-25  4

    Question:

    Given a sorted array of integers, 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].

    For example, Given [5, 7, 7, 8, 8, 10] and target value 8, return [3, 4].

    Solution:we have a different loop condition here and we also apply binary search here to find the range.

    public class Solution { public int[] searchRange(int[] nums, int target) { int low=0; int high=nums.length-1; int[] res=new int[2]; while(nums[low]<nums[high]) { int mid=(high-low)/2+low; if(target<nums[mid]) high=mid-1; else if(target>nums[mid]) low=mid+1; else { if(nums[low]==nums[mid]) high--; else low++; } } if(nums[low]==nums[high]&&nums[low]==target) { res[0]=low; res[1]=high; } else { res[0]=-1; res[1]=-1; } return res; } }

    转载请注明原文地址: https://ju.6miu.com/read-1203923.html
    最新回复(0)