栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构-线性表(数组)-线性枚举中最值算法 153.寻找旋转排序数组中的最小值 -非常重要的题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构-线性表(数组)-线性枚举中最值算法 153.寻找旋转排序数组中的最小值 -非常重要的题

二分法的时间复杂度是O(logn)
1. 法一:遍历全部数组找到最小值 O(n);
2. 法二:对数组进行排序,最小值就是nums[0];
3. 法二:二分查找法 :对于有序数组 类似单峰函数的数组

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

如图:对于nums[right]:最小值左侧的数都大于nums[right],所以当nums[mid]>nums[right]时,最小值在mid的右侧;最小值右侧的数都小于nums[right],所以当nums[mid] 不能用nums[left]比较,链接里讲清楚了

二分法详细描述

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779554.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号