題目
給予一串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; } };
|