題目.
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 先找到有序的一半 ...