• [剑指 Offer 11. 旋转数组的最小数字]


    [剑指 Offer 11. 旋转数组的最小数字]

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2][1,2,3,4,5] 的一个旋转,该数组的最小值为1。

    示例 1:

    输入:[3,4,5,1,2]
    输出:1
    

    示例 2:

    输入:[2,2,2,0,1]
    输出:0
    

    方法1:使用自带的sort函数,对数组进行排序,然后取出第一个数值

    class Solution {
    public:
        int minArray(vector<int>& numbers) {
            sort(numbers.begin(), numbers.end());
            return numbers[0];
        }
    };
    

    方法2:可以使用二分查找算法,对于一个排好序或者部分排好序的数组,在其中查找某个元素或者统计元素个数时,可以考虑使用二分查找算法

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

    注:

    这道题和 154. 寻找旋转排序数组中的最小值 II(https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/)
    及 153. 寻找旋转排序数组中的最小值(https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/description/)为同一题目

  • 相关阅读:
    Servlet
    反射
    Python之装饰器
    app——升级测试点
    Python之基本运算符
    HTTP常见的几种认证机制
    Shell文件包含
    Shell输入/输出重定向
    Shell函数
    Shell循环语句
  • 原文地址:https://www.cnblogs.com/wangdongfang/p/13733071.html
Copyright © 2020-2023  润新知