33. Search in Rotated Sorted Array

Bear熊
2 min readAug 18, 2020

--

LeetCode 33. Search in Rotated Sorted Array 位移過的sorted array

我們把數列分成兩半,就是紅字標起來(位移的)一半跟另外一半。

這題分成兩種狀況

情況1 要找的數字跟目前mid同一半

情況2 要找的數字跟mid不同半

如果是情況1. 其實就跟平常的binary search沒兩樣

如果是情況2. 就比較特別,其實我們就是只要往target的那一個半邊(例如紅色那塊)去就好了。

綠色是要找的數字 黑色箭頭是mid

情況1 我先說一下會是怎樣 要找的數字跟 mid屬於同一邊

圖1

另外一個在紅色那半邊的

圖2

所以這時候執行正常的binary search

情況二 :其實就可想像是第一張圖 綠色箭頭在紅色那邊
第二張圖綠色箭頭在黑色那邊
這時候我們希望它無限的往綠色箭頭那邊靠。
這時候我們拿target(綠色箭頭的值) 去跟num[0](value = 7) 比較

在情況2如何靠近

以第一張圖來說因為綠色箭頭(5)是屬於黑色的array那部分,所以她跟開頭比一一比較小 所以這時候我們希望往左邊靠 就把 比較的數字設為 無限小

反之當他如下圖 他比 num[0]大 那他就設成無限大讓他往左邊靠。

主要觀念來自這邊

https://leetcode.com/problems/search-in-rotated-sorted-array/discuss/14435/Clever-idea-making-it-simple

--

--