首页 > 其他 > 详细

[LeetCode] Find Minimum in Rotated Sorted Array II

时间:2015-01-09 20:52:57      阅读:237      评论:0      收藏:0      [点我收藏+]

Follow up for "Find Minimum in Rotated Sorted Array":
What if duplicates are allowed?

Would this affect the run-time complexity? How and why?

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.

The array may contain duplicates.

 

跟上一题一样,注意相等的情况要特殊考虑。

 1 class Solution {
 2 public:
 3     int findMinHelper(vector<int> &num, int left, int right) {
 4         int mid = (left + right) / 2;
 5         if (mid == left || mid == right) {
 6             return min(num[left], num[right]);
 7         }
 8         if (num[mid] < num[right]) {
 9             return findMinHelper(num, left, mid);
10         } else if (num[mid] > num[right]) {
11             return findMinHelper(num, mid, right);
12         } else {
13             return findMinHelper(num, left, right - 1);
14         }
15     }
16     int findMin(vector<int> &num) {
17        return findMinHelper(num, 0, num.size() - 1);
18     }
19 };

或者:

 1 class Solution {
 2 public:
 3     int findMinHelper(vector<int> &num, int left, int right) {
 4         int mid = (left + right) / 2;
 5         if (mid == left || mid == right) {
 6             return min(num[left], num[right]);
 7         }
 8         if (num[mid] < num[right]) {
 9             return findMinHelper(num, left, mid);
10         } else if (num[mid] > num[right]) {
11             return findMinHelper(num, mid, right);
12         } else {
13             int res = num[left];
14             for (int i = left; i <= right; ++i) {
15                 res = min(res, num[i]);
16             }
17             return res;
18         }
19     }
20     int findMin(vector<int> &num) {
21        return findMinHelper(num, 0, num.size() - 1);
22     }
23 };

 

[LeetCode] Find Minimum in Rotated Sorted Array II

原文:http://www.cnblogs.com/easonliu/p/4214080.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!