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)

相关推荐
小园子的小菜6 小时前
深入理解 JVM 垃圾回收:从对象判定、回收算法到经典收集器全解析
jvm·算法
hold?fish:palm6 小时前
7 接雨水
开发语言·c++·leetcode
2601_954526756 小时前
【硬核长文】从卡门涡街物理方程到边缘网关温压补偿算法:工业蒸汽测控实战,深度解密靠谱的涡街流量计厂家有哪些
算法
吞下星星的少年·-·7 小时前
牛客技能树:区间翻转
算法·滑动窗口
郝学胜-神的一滴7 小时前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl
拂拉氏8 小时前
【知识讲解】 链式哈希表的实现与unordered_map和unordered_set的封装
数据结构·哈希算法·散列表
haolin123.8 小时前
数据结构--二叉树
数据结构
tkevinjd8 小时前
力扣148-排序链表
算法·leetcode·链表
不如语冰8 小时前
AI大模型入门-参数的传递
数据结构·人工智能·pytorch·python
ch0sen1pm8 小时前
刚学完 CAS 原子操作,我花了一晚上写了三个无锁队列
c++