LintCode 搜尋區間

2021-07-27 18:46:20 字數 672 閱讀 2589

題目

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

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

樣例

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

返回[3, 4]

思路

用二分法分別查詢出目標值的左右邊界。查詢左邊界時a[r]永遠大於等於target,a[p]最後確定左邊界。查詢右邊界是a[p]永遠小於等於target, a[r]最後確定左邊界。

**

vector

searchrange(vector

&a, int target)

int p = 0;

int r = a.size() - 1;

while(p < r)

else

}if(a[p] == target)

p = 0;

r = a.size()- 1;

while(p < r)

else

}if(a[r] == target)

return result;

}

搜尋區間 LintCode

描述 給定乙個包含 n 個整數的排序陣列,找出給定目標值 target 的起始和結束位置。如果目標值不在陣列中,則返回 1,1 樣例 給出 5,7,7,8,8,10 和目標值target 8,返回 3,4 挑戰 時間複雜度 o log n 思路 ifndef c61 h define c61 h i...

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