Fork me on GitHub

Search for a range

Linkage

https://leetcode.com/problems/search-for-a-range/description/

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] None = {-1, -1};
if (nums.length == 0) return None;

int left = 0;
int right = nums.length - 1;
int mid = ( left + right ) / 2;
while (left <= right) {
if (nums[mid] == target) {
return searchForRange(nums, target, mid);
}
if (left == right) {
return None;
}

if (nums[mid] < target) left = mid + 1;
if (nums[mid] > target) right = mid - 1;
mid = ( left + right ) / 2;
}


return None;
}

public int[] searchForRange(int[] nums, int target, int position) {
int left = position;
int right = position;
while (left-1 >= 0 && nums[left-1] == target) {
left -= 1;
}
while (right + 1 < nums.length && nums[right + 1] == target) {
right += 1;
}
int[] ret = {left, right};
return ret;
}

}