0
点赞
收藏
分享

微信扫一扫

【二分查找】力扣 275. H 指数 II

westfallon 2024-12-02 阅读 15
c++算法

文章目录


题目链接:

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


题目描述:

77c0436a052db3eda90b2887fceb09d0


解法

因为这里的数是全部不相同的,所以可以这么搞。

bb6b6910b2cc675162bccd2a0061ba80

898f429b59a8a6eee6bc70ad0b4c4b12


C++ 算法代码:

class Solution 
{
    public:
    int findMin(vector<int>& nums) 
    {
        int left = 0, right = nums.size() - 1;
        int x = nums[right]; // 标记一下最后一个位置的值
        while(left < right)
        {
            int mid = left + (right - left) / 2;
            if(nums[mid] > x) left = mid + 1;
            else right = mid;
        }
        return nums[left];
    }
};

图解

例如:nums = [3,4,5,1,2]

47117cad3ed26a6d9707d4b9371ba4af

  1. left = 0, right =4

    x=nums[4]=2

    进入循环,mid = 2

    nums[mid] > x,left=3

  2. left = 3, right =4

    进入循环,mid = 3

    right = 3

  3. 结束程序,返回1

举报

相关推荐

0 条评论