LintCode 159:Find Minimum in Rotated Sorted Array

来源:互联网 发布:淘宝一键上传好不好 编辑:程序博客网 时间:2024/05/29 15:34

Description:

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.


Note:

1.用二分法。

当nums[low]<=nums[mid]时,证明[low,mid]为递增数组,除非整个数组都是递增数组,否则我们想要找的数在[mid,high]范围中。反之,我们想要找到的数在[low,mid]中。

2.注意检查边界情况,如当数组个数为1时,当数组为递增数组时。


Code:

class Solution {public:/*** @param nums: a rotated sorted array* @return: the minimum number in the array*/int findMin(vector<int> &nums) {// write your code hereint low = 0;int high = nums.size()-1;int mid;while (high - low > 1) {mid = low + (high - low) / 2;if (nums[low] <= nums[mid])low = mid;elsehigh = mid;}if(nums[low]>=nums[high])return nums[high];return nums[0];} };

原创粉丝点击