LeetCode 154 Find Minimum in Rotated Sorted Array II (C++, Python)

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.

Solution C++


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

Solution Python


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class Solution:
    def intFindMin(self, num, low, high):
        while low < high:
            mid = (low + high) / 2
            if num[mid] > num[mid + 1]: return num[mid + 1]
            if num[mid] == num[low] or num[mid] == num[high]:
                return min(self.intFindMin(num, low, mid), self.intFindMin(num, mid + 1, high))
            if num[mid] > num[high]:
                low = mid + 1
            elif num[mid] < num[low]:
                high = mid
            else:
                break
        return num[low]
    # @param num, a list of integer
    # @return an integer
    def findMin(self, num):
        return self.intFindMin(num, 0, len(num) - 1)

Popular posts from this blog

How Django Works (4) URL Resolution

Python Class Method and Class Only Method

How Django works (3): Testing Server and Static Files Serving