无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ó)家法律
弥渡县| 庆安县| 平阴县| 无锡市| 普格县| 水城县| 金昌市| 峨山| 克拉玛依市| 绵阳市| 枞阳县| 安福县| 昭平县| 邹城市| 新疆| 博野县| 鱼台县| 澄江县| 桑日县| 乌鲁木齐县| 郑州市| 辉县市| 桐柏县| 安阳市| 清流县| 武平县| 章丘市| 汝城县| 冷水江市| 信宜市| 天峨县| 宁陵县| 郯城县| 开封市| 余干县| 苏州市| 顺义区| 白玉县| 缙云县| 额敏县| 朝阳区|