leetcode 33 搜尋旋轉排序陣列

2021-09-23 15:21:21 字數 1246 閱讀 3032

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

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

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

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

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

示例1

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

輸出: 4

示例2

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

輸出: -1

class

solution

:def

search

(self, nums: list[

int]

, target:

int)

->

int:

defhalf_search

(nums, target, i, j, head)

: mid =

int(

0.5*

(j + i)

)if i > j:

return-1

if nums[mid]

== target:

return mid

if(nums[mid]

< target < head)

or(head <= nums[mid]

< target)

or(nums[mid]

>= head and target < head)

:return half_search(nums, target, mid +

1, j, head)

else

:return half_search(nums, target, i, mid-

1, head)

ifnot nums:

return-1

return half_search(nums, target,0,

len(nums)-1

, nums[0]

)

leetcode33 搜尋旋轉排列陣列

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

LeetCode 33 搜尋旋轉排序陣列

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

leetcode 33 搜尋旋轉排序陣列

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