33 搜尋旋轉排序陣列

2021-09-18 04:27:51 字數 1195 閱讀 1851

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。

( 例如,陣列[0,1,2,4,5,6,7]可能變為[4,5,6,7,0,1,2])。

搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回-1

你可以假設陣列中不存在重複的元素。

你的演算法時間複雜度必須是o(log n)級別。

輸入: nums = [4,5,6,7,0,1,2], target = 0

輸出: 4

輸入: nums = [4,5,6,7,0,1,2], target = 3

輸出: -1

class

solution

:def

search

(self, nums: list[

int]

, target:

int)

->

int:

ans =-1

ifnot nums:

return ans

start, end =0,

len(nums)-1

while start +

1< end:

mid =

(start + end)//2

if nums[mid]

>= nums[start]

:if nums[start]

<= target <= nums[mid]

: end = mid

else

: start = mid

else

:if nums[mid]

<= target <= nums[end]

: start = mid

else

: end = mid

if nums[start]

== target:

ans = start

if nums[end]

== target:

ans = end

return ans

33 搜尋旋轉排序陣列

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1。你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。示例...

33 搜尋旋轉排序陣列

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1。你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。示例...

33 搜尋旋轉排序陣列

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1。你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。示例...