刷題筆記 旋轉有序陣列

2021-10-04 22:32:44 字數 2894 閱讀 6426

leetcode 四道旋轉有序陣列相關的題

1、找到陣列的最小值

leetcode154 陣列有重複

leetcode153 陣列無重複

和nums[right]比較

nums[mid]nums[right] 左邊有序 left=mid+1

跟左邊比,可能會錯過最小值

兩個問題共享同乙份**

def

findmin

(self, nums)

:"""

:type nums: list[int]

:rtype: int

"""iflen

(nums)==1

:return nums[0]

left=

0 right=

len(nums)-1

while left<=right:

mid=left+

(right-left)//2

if nums[mid]

>nums[right]

: left=mid+

1elif nums[mid]

: right=mid

elif nums[mid]

==nums[right]

: right-=

1return nums[left]

leetcode33 查詢 陣列不存在重複元素

-1leetcode81 查詢 陣列存在重複元素

3道旋轉有序陣列題81 153 154

和33題差不多,只是這個陣列中含有重複值,然後目標值存在就返回true,否則返回false。所以情況複雜一點 當首,尾和中值都相等時不好判斷左邊有序還是有序,所以這種情況直接將首尾去掉,不影響判斷 當首尾,中值不全相等時就和33題的判斷差不多了,即中值小於尾值時,右邊有序 中值大於尾值時,左邊有序 ...

lintcode刷題 搜尋旋轉排序陣列

原題如下 搜尋旋轉排序陣列 假設有乙個排序的 按未知的旋轉軸旋轉的 陣列 比如,0 1 2 4 5 6 7 可能成為 4 5 6 7 0 1 2 給定乙個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回 1。你可以假設陣列中不存在重複的元素。您在真實的面試中是否遇到過這個題?ye...

有序陣列旋轉的問題

一般情況下我們的第一反應肯定是遍歷此陣列,但這肯定不是我們所期望的,因為此陣列是有序陣列旋轉而成,所以我們此時應該想到用二分法來尋找陣列中的最小值。假設我們給定遞增陣列 旋轉後的陣列有下面幾種形式 通過觀察可以發現,在經過旋轉後的陣列在尋找最小值的過程中0的前面的數總是大於0後面的數,所以我們可以以...