public class Solution {
public int[] searchRange(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return new int[]{-1, -1};
}
int start = first(nums, target);
if (start == nums.length || nums[start] != target) {
return new int[]{-1, -1};
}
int end = first(nums, target + 1);
return new int[]{start, nums[end] == target? end: end-1};
}
public int first(int[] nums, int target) {
int low = 0, high = nums.length - 1;
while (low + 1 < high) {
int mid = low + (high - low) / 2;
if (nums[mid] < target) {
low = mid;
} else {
high = mid;
}
}
if (nums[low] == target) {
return low;
}
return high;
}
}
Runtime: 0 ms, faster than 100.00% of Java online submissions for Find First and Last Position of Element in Sorted Array.
Memory Usage: 42.6 MB, less than 25.52% of Java online submissions for Find First and Last Position of Element in Sorted Array.
수업때 뒤지게 한 binary search...
뒤지게 반갑다^^