LeetCode 81 搜尋旋轉排序陣列 II

2021-10-04 19:32:52 字數 1576 閱讀 2102

題目

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

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

輸出: true

示例 2:

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

輸出: false

高階:

這是 搜尋旋轉排序陣列 的延伸題目,本題中的 nums 可能包含重複元素。

解題思路

本題是leetcode 33. 搜尋旋轉排序陣列 的高階,本題主要側重點在於處理陣列中的重複元素。

1. 首先我們來考慮一下重複元素會造成什麼樣的影響,

如果 nums[0] == nums[-1] == target:

直接找到了 target,返回 true 即可

如果 nums[0] == nums[-1] != target:

2. 我們可以採用二分法

演算法流程:

複雜度分析

時間複雜度:o(logn)

空間複雜度:o(1)

**如下:

class

solution

(object):

defsearch

(self, nums, target)

:"""

:type nums: list[int]

:type target: int

:rtype: bool

"""left =

0 right=

len(nums)-1

while

(left<=right)

: mid=left +

(right - left)//2

if(nums[mid]

==target)

:return

true

if(nums[mid]

==nums[left]

==nums[right]):

left = left +

1 right = right -

1elif

(nums[left]

<=nums[mid]):

if(nums[left]

<=target and targetright = mid -

1else

: left = mid +

1else:if

(nums[mid]

left = mid +

1else

: right = mid -

1return

false

LeetCode81 搜尋旋轉排序陣列 II

二分查詢,但是下面的 在測試用例 3,1 1中出錯。package 牛客刷題.leetcode.查詢.search in rotated sorted array ii created by administrator on 2018 6 28 0028.public class solution ...

LeetCode 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輸出 t...

leetcode81 搜尋旋轉排序陣列 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 輸...