【題目描述】
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
Find the minimum element.
Notice
The array may contain duplicates.
假設(shè)一個旋轉(zhuǎn)排序的數(shù)組其起始位置是未知的(比如0 1 2 4 5 6 7可能變成是4 5 6 7 0 1 2)掉伏。
你需要找到其中最小的元素赊豌。
【注】:數(shù)組中可能存在重復(fù)的元素。
【題目鏈接】
www.lintcode.com/en/problem/find-minimum-in-rotated-sorted-array-ii/
【題目解析】
此題可使用二分法豪诲。
與Find Minimum in Rotated Sorted Array對照看,
一共有兩處修改。
1、在無重復(fù)元素時粒氧,首尾元素相等代表指向同一個位置,因此程序直接返回即可节腐。
然而當(dāng)存在重復(fù)元素時外盯,該條件并不能表示指向同一個位置,因此
nums[low] > nums[high] ? ??改為 ? ? ?nums[low] >= nums[high]
2翼雀、在無重復(fù)元素時饱苟,中間元素與首元素相等,表示一共只有兩個元素狼渊,low與high各指向一個箱熬。
由于while循環(huán)中限制的大小關(guān)系,因此返回nums[high]即為最小值。
然而當(dāng)存在重復(fù)元素時城须,該條件并不能表示一共只有l(wèi)ow和high指向的兩個元素蚤认,
而是說明low指向的元素重復(fù)了,因此刪除其一糕伐,low ++即可砰琢。
【參考答案】
www.jiuzhang.com/solutions/find-minimum-in-rotated-sorted-array-ii/