成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

在已排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

給定一個(gè)按照升序排列的整數(shù)數(shù)組`nums`,和一個(gè)目標(biāo)值`target`。要求找出給定目標(biāo)值在數(shù)組中的開(kāi)始位置和結(jié)束位置。時(shí)間復(fù)雜度為O(logn)。解決方案我們可以使用二分查找來(lái)解決這個(gè)問(wèn)題。首先,

給定一個(gè)按照升序排列的整數(shù)數(shù)組`nums`,和一個(gè)目標(biāo)值`target`。要求找出給定目標(biāo)值在數(shù)組中的開(kāi)始位置和結(jié)束位置。時(shí)間復(fù)雜度為O(logn)。

解決方案

我們可以使用二分查找來(lái)解決這個(gè)問(wèn)題。首先,我們需要編寫(xiě)一個(gè)函數(shù),通過(guò)二分查找獲取一個(gè)指定值在有序數(shù)組中第一次出現(xiàn)的位置。如果沒(méi)有找到該元素,則返回-1。其偽代碼如下:

```

function findFirstOccurrence(nums, target):

left 0

right nums.length - 1

while left < right:

mid (left right) / 2

if nums[mid] target and (mid 0 or nums[mid-1] ! target):

return mid

elif nums[mid] < target:

left mid 1

else:

right mid - 1

return -1

```

接下來(lái),我們?cè)倬帉?xiě)一個(gè)函數(shù),通過(guò)二分查找獲取一個(gè)指定值在有序數(shù)組中最后出現(xiàn)的位置。如果沒(méi)有找到該元素,則返回-1。其偽代碼如下:

```

function findLastOccurrence(nums, target):

left 0

right nums.length - 1

while left < right:

mid (left right) / 2

if nums[mid] target and (mid nums.length-1 or nums[mid 1] ! target):

return mid

elif nums[mid] > target:

right mid - 1

else:

left mid 1

return -1

```

接下來(lái),我們將上述兩個(gè)二分查找方法結(jié)合起來(lái),編寫(xiě)一個(gè)函數(shù)來(lái)獲取一個(gè)元素在排序數(shù)組中第一次和最后一次出現(xiàn)的位置。其偽代碼如下:

```

function searchRange(nums, target):

first findFirstOccurrence(nums, target)

last findLastOccurrence(nums, target)

return [first, last]

```

測(cè)試方法

為了驗(yàn)證我們的解決方案是否正確,我們需要編寫(xiě)一些測(cè)試方法。以下是一個(gè)簡(jiǎn)單的測(cè)試方法:

```

function test():

nums [1, 2, 2, 3, 4, 5, 5, 5, 6]

target 5

result searchRange(nums, target)

if result [5, 7]:

print("Test Passed")

else:

print("Test Failed")

test()

```

運(yùn)行測(cè)試方法

運(yùn)行上述測(cè)試方法,并觀察控制臺(tái)輸出。如果輸出符合預(yù)期,則本地測(cè)試通過(guò)。

提交算法

在完成本地測(cè)試之后,可以將算法提交到相應(yīng)的平臺(tái)進(jìn)行測(cè)試。如果經(jīng)過(guò)平臺(tái)測(cè)試也通過(guò)了,那么我們的解決方案就是正確的。

通過(guò)以上步驟,我們可以在已排序數(shù)組中高效地查找元素的第一個(gè)和最后一個(gè)位置。這種方法的時(shí)間復(fù)雜度為O(logn),相比于線(xiàn)性查找的O(n)要更加高效。

標(biāo)簽: