給定乙個包含 n 個整數的排序陣列,找出給定目標值 target的起始和結束位置。
如果目標值不在陣列中,則返回[-1, -1]
樣例給出[5, 7, 7, 8, 8, 10]
和目標值target=8
,
返回[3, 4]
挑戰
時間複雜度 o(log n)
應該要第一時間反應到二分,就算沒有想到看到這個時間複雜度也要想到了
總體思路就是用二分找到target再前後搜尋下就行了
1 vector searchrange(vector &a, inttarget) 910
int low=0,high=a.size();
11int
mid;
12int
start,end;
13while(low<=high)
21while (start >= 0 && a[start] ==target )
24 res.push_back(start + 1
);25 res.push_back(end - 1
);26
return
res;27}
2829
if(a[mid]>target)
32else35}
36 res.push_back(-1
);37 res.push_back(-1
);38
return
res;
39 }
LintCode 61 搜尋區間
給定乙個包含 n 個整數的排序陣列,找出給定目標值 target 的起始和結束位置。如果目標值不在陣列中,則返回 1,1 給出 5,7,7,8,8,10 和目標值target 8,返回 3,4 時間複雜度 o log n 先用二分法找到以後,再搜尋區間。vector searchrange vect...
LintCode 61 搜尋區間
給定乙個包含 n 個整數的排序陣列,找出給定目標值 target 的起始和結束位置。如果目標值不在陣列中,則返回 1,1 樣例 給出 5,7,7,8,8,10 和目標值target 8,返回 3,4 思路 二分查詢 class solution else return result 找左邊界 int...
61 搜尋區間(二分法)
給定乙個包含 n 個整數的排序陣列,找出給定目標值 target 的起始和結束位置。如果目標值不在陣列中,則返回 1,1 樣例 給出 5,7,7,8,8,10 和目標值target 8,返回 3,4 思想 兩個指標,前後夾擊 解法一 時間複雜度o n class solution return re...