153. 寻找旋转排序数组中的最小值

本题要求在旋转排序数组中寻找最小值。例如:

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

解题思路:通过比较二分值x与数组末尾元素nums.back()来判断x的位置:

  • 若x <= nums.back(),说明x位于第二段递增序列,此时x可能是最小值或在最小值右侧
  • 若x > nums.back(),说明x位于第一段递增序列,x必定在最小值左侧

通过不断二分缩小范围,最终循环结束时指向的元素即为最小值,返回其下标即可。

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

时间复杂度:O(logn)

空间复杂度:O(1)

相关推荐
编码小笨猪7 分钟前
[ Qt ] | Qlabel使用
开发语言·c++·qt
还有几根头发呀11 分钟前
double怎么在c/c++中输出保留输出最小精度为一位
c语言·开发语言·c++
wen__xvn42 分钟前
DFS:从入门到进阶的刷题指南
算法·深度优先
天天代码码天天1 小时前
PP-OCRv5 C++封装DLL C#调用源码分享
开发语言·c++·c#·ocr
xiaohanbao091 小时前
day40 python图像数据与显存
python·深度学习·学习·算法·机器学习·图像
wen__xvn1 小时前
每日刷题c++
数据结构·c++·算法
橙留香mostarrain1 小时前
从零开始的数据结构教程(六) 贪心算法
数据结构·算法·贪心算法
努力敲代码的小慧1 小时前
哈夫曼编码
数据结构
点云SLAM1 小时前
PyTorch中 torch.utils.data.DataLoader 的详细解析和读取点云数据示例
人工智能·pytorch·python·算法·计算机视觉·dataloader·3d深度学习
思绪漂移2 小时前
同源“平滑思想”的问题解法:正则化与拉普拉斯平滑
人工智能·算法