zoukankan      html  css  js  c++  java
  • [leetcode]Find Minimum in Rotated Sorted Array II

    二分,各种情况。

    class Solution {
    public:
        int findMin(vector<int> &num) {
            int size = num.size();
            int minVal = num[size-1];
            findMinRe(num, 0, size - 1, minVal);
            return minVal;
        }
        
        void findMinRe(vector<int> &num, int left, int right, int &minVal) {
            if (right < left) return;
            int mid = (left + right) / 2;
            if (num[left] < num[right]) {
                minVal = min(minVal, num[left]);
                return;
            }
            if (num[left] > num[right]) {
                minVal = min(minVal, num[right]);
                if (num[mid] <= num[right]) {
                    minVal = min(minVal, num[mid]);
                    findMinRe(num, left, mid - 1, minVal);
                } else {
                    findMinRe(num, mid + 1, right, minVal);
                }
            }
            if (num[left] == num[right]) {
                minVal = min(num[left], minVal);
                if (num[mid] < num[right]) {
                    minVal = min(minVal, num[mid]);
                    findMinRe(num, left, mid - 1, minVal);
                } else if (num[mid] > num[right]) {
                    findMinRe(num, mid + 1, right, minVal);
                } else { // ==
                    findMinRe(num, left, mid - 1, minVal);
                    findMinRe(num, mid + 1, right, minVal);
                }
            }
        }
    };
    

      

  • 相关阅读:
    最近重感冒完全不知道知己在记什么

    倾尽一生
    学习笔记,函数
    唯美句
    02 mysql 基础二 (进阶)
    01 mysql 基础一 (进阶)
    16 正则表达式
    15 迭代器、生成器、模块和包
    14 异常
  • 原文地址:https://www.cnblogs.com/lautsie/p/4196789.html
Copyright © 2011-2022 走看看