題目

給予一串Array及目標數,找到其目標數在陣列第一次出現及最後一次出現的位置。

解題方法

這裡的話,因為題目有限制說時間複雜度必須在log(n),所以無法直接用迴圈硬做。
但我的方法,跑出來時間也是蠻久的,就也沒厲害QQ
先使用一個Iterator去尋找目標數在陣列出現的第一個位置,再使用迴圈從那個位置去找最後一次出現的位置。

程式碼

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
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {

if(nums.size() == 0)
return{-1,-1};

vector<int> ans;

vector<int>::iterator it1 = find(nums.begin(),nums.end(),target);
int firstPos = 0;
if(it1 != nums.end())
{
firstPos = distance(nums.begin(),it1);
ans.push_back(firstPos);
}

int tmp = -1;
for(int i = firstPos;i < nums.size();++i)
{
if(nums[i] == target)
tmp = i;
}
ans.push_back(tmp);

if(ans.size() == 1)
ans.push_back(-1);

return ans;
}
};