154. 寻找旋转排序数组中的最小值 II
生活随笔
收集整理的這篇文章主要介紹了
154. 寻找旋转排序数组中的最小值 II
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉跳點:--\(˙<>˙)/--
原本打算大年三十十一起寫完的,結果這篇拖到了年初一……
這道題比剛剛那道,麻煩一點,因為有重復,所以我們需要考慮重復的情況,就是剛剛的兩種情況變成了三種:
- mid < right:left = mid+1
- mid > right:right = left;
- mid = right:left++;
為什么是++?題目說了升序,如果相等那么說明只有兩種可能
- 整個數組都是一個數
- 旋轉點極有可能就是這個數(貌似和解題無關)
所以無論如何那種情況,題設想要的最小值一定得往后判斷,全數組一樣也得往后,因為輸入的代碼需要通用性。如果非要 -- 也可以,不過得從right--,并且left = mid。
代碼如下:
int findMin(int* nums, int numsSize){
int low = , high = numsSize-;
while (low < high)
{
if (nums[low] < nums[high])
{
return nums[low];
}
int mid = low + (high - low) / ;
if (nums[mid] > nums[high])
{
low = mid + ;
}
else if (nums[mid] < nums[high])
{
high = mid;
}
else
{
low++;
}
}
return nums[low];
}
算法不易,諸君共勉!
總結
以上是生活随笔為你收集整理的154. 寻找旋转排序数组中的最小值 II的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: usert
- 下一篇: 使用GRUB Multiboot2引导自