LeetCode-033-搜索旋轉(zhuǎn)排序數(shù)組

題目描述:整數(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 開(kāi)始 計(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] 。
示例說(shuō)明請(qǐng)見(jiàn)LeetCode官網(wǎng)。
來(lái)源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解法一:二分查找
首先,如果nums只有一個(gè)數(shù)字,直接判斷這個(gè)數(shù)字是否等于target,并返回結(jié)果;
如果nums不止一位,首先遍歷一遍nums獲取最大值的位置maxIndx,然后分兩種情況:
判斷target如果不大于nums最后一位的數(shù),則用二分查找法查找nums中
(maxIndx, nums.length - 1)
中是否存在跟target值相等的元素,如果有返回相應(yīng)的位置,如果沒(méi)有返回-1;如果target大于nums最后一位的數(shù),則用二分查找法查找nums中
(0, maxIndx)
中是否存在跟target值相等的元素,如果有返回相應(yīng)的位置,如果沒(méi)有返回-1。
【每日寄語(yǔ)】 愿每一個(gè)醒來(lái)的日子,都有陽(yáng)光相伴,或許在晴空,或許在心里。