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]
.
public class Solution { public int[] searchRange(int[] A, int target) { // Adopt a modified binary search int[] range = {-1,-1}; int n = A.length; if (n == 0) return range; int lo = 0, hi = n-1, mid; while (lo <= hi) { mid = lo + (hi-lo)/2; if (target < A[mid]) hi = mid-1; else if (target > A[mid]) lo = mid+1; else { range[0] = mid; for (int i = mid-1; i >= 0; i--) if (A[i] == A[mid]) range[0] = i; else break; range[1] = mid; for (int i = mid+1; i < n; i++) if (A[i] == A[mid]) range[1] = i; else break; return range; } } return range; } }
No comments:
Post a Comment