leetcode153 尋找旋轉陣列中的最小值

2021-09-26 14:15:19 字數 822 閱讀 6986

這道題簡單來說就是二分法的乙個變體,但是難點在於異常情況的考慮。

將前面0個數搬到陣列後面,也能稱其為旋轉陣列。

0111陣列的旋轉陣列1011,1101

對於第一種情況,因為旋轉之前,陣列已經是有序的,所以直接輸出第乙個數即可。

對於第二種情況,則只能順序遍歷。

**如下:

public

intfindmin

(int

nums)

// 把第0個資料旋轉到陣列後面

int first =0;

int last = nums.length -1;

int mid = first;

while

(nums[first]

>= nums[last]

)// 針對情況二,只能順序遍歷

if(nums[first]

== nums[last]

&& nums[last]

== nums[mid])if

(nums[mid]

> nums[first]

)else

if(nums[mid]

< nums[last]

) mid =

(last + first)/2

;}return nums[mid];}

private

intmininorder

(int

nums)

}return target;

}

最優情況下時間複雜度o(logn),最差時間複雜度o(n)。

153 尋找旋轉排序陣列中的最小值

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請找出其中最小的元素。你可以假設陣列中不存在重複元素。示例 1 輸入 3,4,5,1,2 輸出 1 示例 2 輸入 4,5,6,7,0,1,2 輸出 0 思考 這題遍...

153和154 尋找旋轉排序陣列中的最小值

先找到有序的那一部分,然後有序那一部分中最左元素和min作比較。修改範圍,再次查詢。class solution left mid 1 else right mid 1 return min 看到題解的解法很簡潔。再次寫的時候發現體驗不太好。如果只比較兩端是比較不出啥的。如 8 1 2 3 4 8 ...

LeetCode第153題解析

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請找出其中最小的元素。你可以假設陣列中不存在重複元素。示例 1 輸入 3,4,5,1,2 輸出 1 示例 2 輸入 4,5,6,7,0,1,2 輸出 0 解題思路 r...