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

2021-10-08 23:16:27 字數 1287 閱讀 1367

先找到有序的那一部分,然後有序那一部分中最左元素和min作比較。修改範圍,再次查詢。

class

solution

left=mid+1;

}else

right=mid-1;

}}return min;

}}

看到題解的解法很簡潔。

再次寫的時候發現體驗不太好。

如果只比較兩端是比較不出啥的。

如 8 1 2 3 4

8 9 10 11 4

所以必有mid

class

solution

else

/*下同、

if(nums[mid]<=nums[right])else

*/}return0;

}}

154, 要求元素可能重複。

題解很簡潔。特別在意的是mid和right的比較。

如果mid和left比較,**可能更加複雜。

class

solution

else

if(nums[mid]

)else

}return nums[left];}

}

看了題解寫出的遞迴。

面向測試程式設計了。

//比較左邊

/* 因為陣列之前是遞增的,旋轉之後可能會起起伏伏。

判斷mid和left的時候,只是假定了會起起伏伏的,要加上判斷是否有沒有旋轉 */

class

solution

private

intfind

(int

nums,

int left,

int right)

else

if(nums[mid]

>nums[left]

)else

}}

//判斷右邊

class

solution

private

intfind

(int

nums,

int left,

int right)

else

if(nums[mid]

>nums[right]

)else

}}

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 思考 這題遍...

154 尋找旋轉排序陣列中的最小值 II H

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

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

題目描述 假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 請找出其中最小的元素。注意陣列中可能存在重複的元素。示例 1 輸入 1,3,5 輸出 1 示例 2 輸入 2,2,2,0,1 輸出 0 說明 這道題是 尋找...