leetcode Find Minimum in Rotated Array

来源:互联网 发布:网络上的芙蓉姐姐是谁 编辑:程序博客网 时间:2024/06/16 16:18
class Solution {public:    int findMin(vector<int> &num) {        int size = num.size();        if(size == 0){            return 0;        }        if(size == 1){            return num[0];        }        int left = 0, right = size - 1;        while(left <= right){            int mid = (left + right) >> 1;            int leftmid = mid - 1, rightmid = mid + 1;            int leftelement = leftmid >= 0 ? num[leftmid]: 0x7fffffff;            int rightelement = rightmid < size ? num[rightmid]: 0x7fffffff;            if(num[mid] <= leftelement && num[mid] <= rightelement){                return num[mid];            }            if(num[mid] <= num[left] && num[mid] <= num[right]){                right = mid - 1;            }            else if(num[mid] >= num[left] && num[mid] >= num[right]){                left = mid + 1;            }            else if(num[mid] >= num[left] && num[mid] <= num[right]){                right = mid - 1;            }        }    }};

这道题交了两遍才过…
第一遍:
虽然num中没有duplicate,但是num[mid]可能与num[left]或者num[right]相等;
第二遍:
没有考虑num本身为有序的情况

0 0