# LeetCode-153.Find Minimum in Rotated Sorted Array

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/

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.

You may assume no duplicate exists in the array.

public int FindMin(int[] nums)
{
int start = 0, end = nums.Length - 1, mid;
if (end == 0)
return nums[0];
while (start+1!=end)
{
if (nums[start] < nums[end])
return nums[start];
mid = (start + end) / 2;
if (nums[start] < nums[mid])
start = mid;
else
end = mid;
}
return Math.Min(nums[start], nums[end]);
}

int findMin(vector<int>& nums)
{
int l = 0, r = nums.size() - 1, mid;
while (l < r)
{
if (nums[l] < nums[r])
break;
mid = l + (r - l) / 2;
if (nums[mid] >= nums[l])
l = mid + 1;
else
r = mid;
}
return nums[l];
}

int helper(vector<int> &nums, int l, int r)
{
int res = nums[l];
for (int i = l + 1; i <= r; i++)
res = min(res, nums[i]);
return res;
}

int findMin(vector<int> nums)
{
int l = 0, r = nums.size() - 1, mid;
while (l < r)
{
if (nums[l] < nums[r])
break;
mid = l + (r - l) / 2;

if (nums[l] == nums[mid] && nums[r] == nums[mid])//如果三个值相等 只能顺序查找
return helper(nums, l, r);

if (nums[mid] >= nums[l])
l = mid + 1;
else
r = mid;
}
return nums[l];
}

• 本文已收录于以下专栏：

举报原因： 您举报文章：LeetCode-153.Find Minimum in Rotated Sorted Array 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)