題目
給定乙個包含 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...