搜尋區間 LintCode

2021-08-21 07:27:29 字數 925 閱讀 7618

描述

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

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

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

返回[3, 4]

挑戰 時間複雜度 o(log n)

思路

#ifndef c61_h

#define c61_h

#include

#include

using

namespace

std;

class solution ;

if (a.empty())

return res;

int left = 0, right = a.size() - 1;

int mid = 0;

//尋找最左邊target

//當mid等於left 或者 mid前乙個元素不為target, mid就是最左邊的target

//如果mid前乙個元素依舊是target,就把right置為mid - 1

while (left <= right)

else

if (a[mid - 1] == target)}}

left = 0, right = a.size() - 1;

//尋找最右邊的target

//當mid等於right 或者 mid的後乙個元素不為target, mid就是最右邊的target

//如果mid的後乙個元素認為target, 把left置為mid + 1

while (left <= right)

else

if (a[mid + 1] == target)}}

return res;

}};#endif

LintCode 搜尋區間

題目 給定乙個包含 n 個整數的排序陣列,找出給定目標值 target 的起始和結束位置。如果目標值不在陣列中,則返回 1,1 樣例 給出 5,7,7,8,8,10 和目標值target 8,返回 3,4 思路 用二分法分別查詢出目標值的左右邊界。查詢左邊界時a r 永遠大於等於target,a p...

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