騰訊50題第15題

2021-10-01 01:53:28 字數 1255 閱讀 6057

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

(例如,陣列 [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:

size =

len(nums)

if size ==0:

return-1

left =

0 right = size -

1while left < right:

# mid = left + (right - left + 1) // 2

mid =

(left + right +1)

>>

1if nums[mid]

< nums[right]

:if nums[mid]

<= target <= nums[right]

: left = mid

else

: right = mid -

1else

:if nums[left]

<= target <= nums[mid -1]

: right = mid -

1else

: left = mid

return left if nums[left]

== target else

-1

騰訊50題第8題

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例1 輸入 flower flow flight 輸出 fl 示例2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。class solution def longestcommonprefix se...

騰訊50題第10題

給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。例如,給定陣列 nums 1,2,1,4 和 target 1.與 target 最接近的三個數的和為 2.1 2...

騰訊50題第11題

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4輸出 1 1 2 3 4 4class solution def mergetwolists self,l1,l2 if l1 is none return l2 elif ...