题解 | #旋转数组的最小数字#

旋转数组的最小数字

http://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba

旋转数组的最小数字

  • 暴力搜索法
  • 双指针法(以为数组比较大小)
  • 二分法(部分有序)

二分法确定 right= middle

class Solution {
public:
    int minNumberInRotateArray(vector<int> rotateArray) {
        // Method 1
//         int len = rotateArray.size();
//         if (len == 0){
//             return 0;
//         }
//         else if (len == 1){
//             return rotateArray[0];
//         }
//         else{
//             for (int i = 1; i<len; i++){
//                 if (rotateArray[i-1] > rotateArray[i]){
//                     return rotateArray[i];
//                 }
//             }
//         }
//         return rotateArray[0];
        
        // Method 2
//         int len = rotateArray.size();
//         if (len == 0){
//             return 0;
//         }
//         else if (len == 1){
//             return rotateArray[0];
//         }
//         else{
//             int low = 0;
//             int high = len-1;
//             while(low < high){
//                 if(rotateArray[low] >= rotateArray[high]){
//                     low ++;
//                 }
//                 else{
//                     high --;
//                 }
//             }
//             return rotateArray[low];
//         }
        // Method 3 binary search
//         int len = rotateArray.size();
//         if (len == 0){
//             return 0;
//         }
//         else if (len == 1){
//             return rotateArray[0];
//         }
//         else{
//             int left = 0;
//             int right = len-1;
//             int mid = len/2;
//             while(left<right){
//                 if(rotateArray[left] < rotateArray[right]){
//                     return rotateArray[left];
//                 }
//                 mid = left + (right-left)/2;
//                 if(rotateArray[mid]>rotateArray[left]){
//                     left = mid+1;
//                 }
//                 else if(rotateArray[mid]<=rotateArray[left]&& rotateArray[mid]<rotateArray[right]){
//                     right = mid;
//                 }
//                 else{
//                     left ++;
//                 }
//             }
//             return rotateArray[left];
//         }
        // Method 4
        int min = rotateArray[0];
        for (auto val: rotateArray){
            min = val<min?val:min;
        }
        return min;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 10:52
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务