Lintcode160 Find Minimum in Rotated Sorted Array II solution 題解

【題目描述】

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.

假設一個旋轉排序的數組其起始位置是未知的(比如0 1 2 4 5 6 7可能變成是4 5 6 7 0 1 2)。

你需要找到其中最小的元素。

【注】:數組中可能存在重復的元素。

【題目鏈接】

www.lintcode.com/en/problem/find-minimum-in-rotated-sorted-array-ii/

【題目解析】

此題可使用二分法。

Find Minimum in Rotated Sorted Array對照看,

一共有兩處修改。

1、在無重復元素時,首尾元素相等代表指向同一個位置,因此程序直接返回即可。

然而當存在重復元素時,該條件并不能表示指向同一個位置,因此

nums[low] > nums[high] ? ??改為 ? ? ?nums[low] >= nums[high]

2、在無重復元素時,中間元素與首元素相等,表示一共只有兩個元素,low與high各指向一個。

由于while循環中限制的大小關系,因此返回nums[high]即為最小值。

然而當存在重復元素時,該條件并不能表示一共只有low和high指向的兩個元素,

而是說明low指向的元素重復了,因此刪除其一,low ++即可。

【參考答案】

www.jiuzhang.com/solutions/find-minimum-in-rotated-sorted-array-ii/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容