码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode. Find Minimum in Rotated Sorted Array

时间:2014-12-07 23:05:41      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   os   sp   for   div   log   

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.

对数组A, 

1)如果A[mid] < A[low], 说明minimum在[mid, low]之间。(存在rotated)

2)若A[mid] > A[low], 有两种情况:

  a)A[mid] > A[high], minimum在[mid, high]之间。(存在rotated)

  b)A[mid] < A[high], minimum在[low, mid]之间。(不存在rotated)

注意终止条件:A[mid]小于左右两侧或者low == mid

 1 int findMin(vector<int> &num) 
 2     {
 3         int low = 0, high = num.size() - 1, mid = 0;
 4         while (low <= high)
 5         {
 6             mid = (low + high) / 2;
 7             if ((mid == 0 || num[mid] < num[mid - 1]) && (mid == num.size() - 1 || num[mid] < num[mid + 1]))
 8                 break;
 9             if (num[mid] < num[low])
10             {
11                 high = mid - 1;
12             }
13             else if (num[mid] > num[low])
14             {
15                 if (num[mid] > num[high])
16                     low = mid + 1;
17                 else if (num[mid] < num[high])
18                     high = mid - 1;
19             }
20             else
21             {
22                 return min(num[low], num[high]);
23             }
24         }
25         
26         return num[mid];
27     }

 

leetcode. Find Minimum in Rotated Sorted Array

标签:style   blog   ar   color   os   sp   for   div   log   

原文地址:http://www.cnblogs.com/ym65536/p/4150061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!