leetcode--81--搜索旋轉排序數(shù)組 II

題目:
假設按照升序排序的數(shù)組在預先未知的某個點上進行了旋轉灰羽。

( 例如蜓肆,數(shù)組 [0,0,1,2,2,5,6] 可能變?yōu)?[2,5,6,0,0,1,2] )元媚。

編寫一個函數(shù)來判斷給定的目標值是否存在于數(shù)組中。若存在返回 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

鏈接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii

思路:
1、這道題是二分查找法的變種蒙畴。首先定義左右指針贰镣,中間指針呜象。
2、需要遍歷去掉左右節(jié)點的重復數(shù)據(jù)
3碑隆、數(shù)據(jù)有五種情況:
a)mid位置的值和target一樣恭陡,完美,返回true
b)mid位置的值大于等于left位置的值上煤,說明從left到mid部分的順序是遞增的
i)如果target在left到mid之間休玩,說明mid太大了,需要right左移
ii)否則劫狠,left左移
c)mid位置的值比left位置的值小拴疤,說明mid到right部分的順序是遞增的
i)如果target在mid到right之間,說明mid偏小了独泞,需要將left右移
ii)否則right左移

Python代碼:

class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: bool
        """
        left = 0
        right = len(nums)-1

        while left<=right:
            # 去掉左右的重復數(shù)據(jù)
            while (left<right and nums[left]==nums[left+1]):
                left += 1
            while (left<right and nums[right]==nums[right-1]):
                right -= 1
            mid = (left+right)/2
            if nums[mid]==target:
                return True
            if nums[mid]>=nums[left]:  # 從left位置到mid是有序的
                # 如果target在left到mid之間遥赚,說明mid大了,需要right左移
                if(target>=nums[left] and target<nums[mid]):
                    right = mid-1
                else:
                    left =mid+1
            else: # 從mid位置到right位置是有序的
                # 如果target在mid到right之間阐肤,說明mid小了,需要left右移
                if (target>nums[mid] and target<=nums[right]):
                    left = mid+1
                else:
                    right = mid-1
        return False

C++代碼:

class Solution {
public:
    bool search(vector<int>& nums, int target) {
        int left=0;
        int right=nums.size()-1;

        while(left<=right){
            while(left<right && nums[left]==nums[left+1]){
                left += 1;
            }
            while(left<right && nums[right]==nums[right-1]){
                right -= 1;
            }
            int mid = (left+right)/2;
            if(nums[mid]==target) return true;
            if(nums[mid]>=nums[left]){ // 從left到mid是有序的
                if(target>=nums[left] && target<nums[mid]){  // left target mid right
                    right = mid-1;
                }else{
                    left = mid+1;
                }
            }else{ // 從mid到right是有序的
                if(target>nums[mid] && target<=nums[right]){ // left mid target right
                    left = mid+1;
                }else{
                    right = mid-1;
                }
            }
        }
        return false;
    }
};
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讲坎,一起剝皮案震驚了整個濱河市孕惜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晨炕,老刑警劉巖衫画,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瓮栗,居然都是意外死亡削罩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門费奸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弥激,“玉大人,你說我怎么就攤上這事愿阐∥⒎” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵缨历,是天一觀的道長以蕴。 經(jīng)常有香客問我,道長辛孵,這世上最難降的妖魔是什么丛肮? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮魄缚,結果婚禮上宝与,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好伴鳖,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布节值。 她就那樣靜靜地躺著,像睡著了一般榜聂。 火紅的嫁衣襯著肌膚如雪搞疗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天须肆,我揣著相機與錄音匿乃,去河邊找鬼。 笑死豌汇,一個胖子當著我的面吹牛幢炸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拒贱,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼宛徊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逻澳?” 一聲冷哼從身側響起闸天,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斜做,沒想到半個月后苞氮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡瓤逼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年笼吟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霸旗。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡贷帮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诱告,到底是詐尸還是另有隱情皿桑,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布蔬啡,位于F島的核電站诲侮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏箱蟆。R本人自食惡果不足惜沟绪,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望空猜。 院中可真熱鬧绽慈,春花似錦恨旱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钝凶,卻和暖如春仪芒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耕陷。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工掂名, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哟沫。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓饺蔑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嗜诀。 傳聞我的和親對象是個殘疾皇子猾警,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345