leetcode演算法練習 33 搜尋旋轉排序陣列

2021-10-05 21:24:22 字數 1456 閱讀 9239

所有題目源**:git位址

題目

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。

( 例如,陣列 [0,

1,2,

4,5,

6,7] 可能變為 [4,

5,6,

7,0,

1,2]

)。搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 -

1 。你可以假設陣列中不存在重複的元素。

你的演算法時間複雜度必須是 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

方案:兩次二分
class

solution

//獲得了節點

//效果是沒有翻轉的時候

if(nums[start]

)//效果是翻轉了的時候

else

if(nums[start]

>target)

return-1

;else

if(nums[0]

<=target)

return

dicsearch

(nums,

0,start,target)

;else

if(nums[nums.length-1]

>=target)

return

dicsearch

(nums,end,nums.length-

1,target)

;else

return-1

;}//二分

public

intdicsearch

(int

nums,

int first,

int last,

int target)

int mid = first+

(last-first)/2

;if(nums[mid]

== target)

return mid;

else

if(nums[mid]

>target)

return

dicsearch

(nums,first,mid,target)

;else

if(nums[mid]

return

dicsearch

(nums,mid,last,target)

;return-1

;}}

複雜度計算

3 3 演算法練習

時間限制 1.0s 記憶體限制 512.0mb 輸入乙個正整數n,輸出n 的值。其中n 12 3 n。n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元...

leetcode演算法練習

1014.最佳觀光組合 給定正整數陣列 a,a i 表示第 i 個觀光景點的評分,並且兩個景點 i 和 j 之間的距離為 j i。一對景點 i j 組成的觀光組合的得分為 a i a j i j 景點的評分之和減去它們兩者之間的距離。返回一對觀光景點能取得的最高分。示例 輸入 8,1,5,2,6 輸...

leetcode演算法練習

1111.有效括號的巢狀深度 有效括號字串 定義 對於每個左括號,都能找到與之對應的右括號,反之亦然。詳情參見題末 有效括號字串 部分。巢狀深度 depth 定義 即有效括號字串巢狀的層數,depth a 表示有效括號字串 a 的巢狀深度。詳情參見題末 巢狀深度 部分。給你乙個 有效括號字串 seq...