Find First and Last Position of Element in Sorted Array LeetCode solution in C++

1
class Solution {
2
public:
3
int startEle(vector<int> &nums, int target, int l, int r) {
4
while (l <= r) {
5
int m = (l + r) / 2;
6
if (nums[m] < target)
7
l = m + 1;
8
else if (nums[m] > target)
9
r = m - 1;
10
else {
11
if (m == 0)
12
return m;
13
else if (nums[m - 1] == target)
14
r = m - 1;
15
else
16
return m;
17
}
18
}
19

20
return -1;
21
}
22

23
int lastEle(vector<int> &nums, int target, int l, int r) {
24
while (l <= r) {
25
int m = (l + r) / 2;
26
if (nums[m] < target)
27
l = m + 1;
28
else if (nums[m] > target)
29
r = m - 1;
30
else {
31
if (m == nums.size() - 1)
32
return m;
33
else if (nums[m + 1] == target)
34
l = m + 1;
35
else
36
return m;
37
}
38
}
39

40
return -1;
41
}
42
vector<int> searchRange(vector<int> &nums, int target) {
43
vector<int> binSearch;
44
int a = startEle(nums, target, 0, nums.size() - 1);
45
if (a == -1) {
46
binSearch.push_back(-1);
47
binSearch.push_back(-1);
48
return binSearch;
49
} else {
50
binSearch.push_back(a);
51
}
52

53
int b = lastEle(nums, target, 0, nums.size() - 1);
54
binSearch.push_back(b);
55

56
return binSearch;
57
}
58
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0