61 搜尋區間

2022-08-11 05:12:11 字數 893 閱讀 1478

給定乙個包含 n 個整數的排序陣列,找出給定目標值 target的起始和結束位置。

如果目標值不在陣列中,則返回[-1, -1]

樣例給出[5, 7, 7, 8, 8, 10]和目標值target=8,

返回[3, 4]

挑戰

時間複雜度 o(log n)

應該要第一時間反應到二分,就算沒有想到看到這個時間複雜度也要想到了

總體思路就是用二分找到target再前後搜尋下就行了

1 vector searchrange(vector &a, int

target) 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...