81 搜尋旋轉排序陣列 II

2021-10-01 22:03:41 字數 960 閱讀 2795

題目.

middle

這是乙個二分查詢的公升級版,我們可以認為,經過旋轉後分成了兩部分,left half和right half,所以每次根據mid所在的位置,淘汰掉一半的資料。千萬不要去尋找旋轉點。這樣會搞得很麻煩

package main

import

("fmt"

)func

search

(nums [

]int

, target int

)bool

iflen

(nums)==1

low, high :=0,

len(nums)-1

if target == nums[low]

|| target == nums[high]

for low < high

continue

} mid := low +

(high-low)/2

if mid == low

if nums[mid]

== nums[low]

if nums[mid]

== nums[high]

if nums[mid]

== target

if nums[mid]

> nums[low]

else

}else

else}}

return

false

}func

main()

,0))

}

o(n) worst

o(1)

執行用時 :

0 ms

, 在所有 go 提交中擊敗了

100.00%

的使用者記憶體消耗 :

3.2 mb

, 在所有 go 提交中擊敗了

85.71%

的使用者

81 搜尋旋轉排序陣列 II

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,0,1,2,2,5,6 可能變為 2,5,6,0,0,1,2 編寫乙個函式來判斷給定的目標值是否存在於陣列中。若存在返回 true,否則返回 false。示例 1 輸入 nums 2,5,6,0,0,1,2 target 0 輸...

81 搜尋旋轉排序陣列 II

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,0,1,2,2,5,6 可能變為 2,5,6,0,0,1,2 編寫乙個函式來判斷給定的目標值是否存在於陣列中。若存在返回 true,否則返回 false。示例 1 輸入 nums 2,5,6,0,0,1,2 target 0 輸...

81 搜尋旋轉排序陣列 II

思路 二分法,肯定能分到有序的一半和無序的一半,如果不在有序的一半那就在無序的那一半裡面 問題在於對於有序的一半的判斷 一開始想當然的,nums left mid就是在左半邊,否則再右半邊,但是這個等號是最難辨別的 因為如果mid是中間的話最難分辨了 class solution 先找到有序的一半 ...