最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

LeetCodeTop100_33. 搜索旋轉(zhuǎn)排序數(shù)組

2023-03-14 10:05 作者:方貓zzz  | 我要投稿

整數(shù)數(shù)組 nums 按升序排列,數(shù)組中的值 互不相同 。


在傳遞給函數(shù)之前,nums 在預(yù)先未知的某個(gè)下標(biāo) k(0 <= k < nums.length)上進(jìn)行了 旋轉(zhuǎn),使數(shù)組變?yōu)?[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下標(biāo) 從 0 開始 計(jì)數(shù))。例如, [0,1,2,4,5,6,7] 在下標(biāo) 3 處經(jīng)旋轉(zhuǎn)后可能變?yōu)?[4,5,6,7,0,1,2] 。


給你 旋轉(zhuǎn)后 的數(shù)組 nums 和一個(gè)整數(shù) target ,如果 nums 中存在這個(gè)目標(biāo)值 target ,則返回它的下標(biāo),否則返回 -1 。


你必須設(shè)計(jì)一個(gè)時(shí)間復(fù)雜度為 O(log n) 的算法解決此問題。


?


示例 1:


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

輸出:4

示例 2:


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

輸出:-1

示例 3:


輸入:nums = [1], target = 0

輸出:-1


因?yàn)橐猯gn的復(fù)雜度,所以想到二分法;

由提供的旋轉(zhuǎn)的條件可以發(fā)現(xiàn),如果從中間砍一刀變成兩個(gè)序列的話,必有一個(gè)是有序的;

判斷一個(gè)值是否在無(wú)序區(qū)間需要遍歷,而判斷一個(gè)值是否在有序區(qū)間卻只需要將target與兩端進(jìn)行比較即可;

而逆轉(zhuǎn)數(shù)組的無(wú)序段和有序段的一個(gè)顯著標(biāo)志就是段頭是否小于段尾;

因此本題的算法應(yīng)該是將數(shù)組不斷二分,在每一次二分的過程中,先找到有序區(qū)間, 然后若通過對(duì)比發(fā)現(xiàn)target在有序區(qū)間,那另一端可以直接舍棄;否則就完全可以將有序區(qū)間舍棄。

這樣就可以加速二分法;


代碼如下:



LeetCodeTop100_33. 搜索旋轉(zhuǎn)排序數(shù)組的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
通渭县| 休宁县| 广平县| 蓝田县| 双鸭山市| 苍山县| 泰兴市| 富裕县| 南开区| 雷州市| 鄱阳县| 阿荣旗| 江都市| 安龙县| 南昌市| 桃园县| 华蓥市| 泰顺县| 连平县| 莱州市| 宁晋县| 九台市| 金华市| 安宁市| 乡宁县| 长治市| 游戏| 乌恰县| 桃江县| 文化| 平遥县| 伽师县| 屏东县| 宁波市| 涡阳县| 澄迈县| 新宾| 苏州市| 开原市| 黎平县| 尉犁县|