当前位置: 首页 > news >正文

【二分算法】-- 寻找旋转排序数组中的最小值

文章目录

  • 1. 题目
  • 2. 题目解析
  • 3. 代码

1. 题目

在线oj
在这里插入图片描述

2. 题目解析

解法一:暴力查找最小值
时间复杂度:0(N)

解法二:二分查找算法

  1. 【二段性】:

在这里插入图片描述

  • A~B:nums[i] > nums[i + 1]

  • C~D:nums[i] < nums[i + 1]

  1. 【解题思路】:
    在这里插入图片描述
    我们选择以D点的值作为参照物:
  • nums[mid] > nums[n - 1] ----> left = mid + 1
  • nums[mid] < nums[n - 1] ----> right = mid

3. 代码

class Solution {
    public int findMin(int[] nums) {
        int n = nums.length;
        int left = 0;
        int right = n - 1;
        while (left < right){
            int mid = left + (right - left) / 2;
            if (nums[mid] > nums[n - 1]){
                left = mid + 1;
            }else {
                right = mid;
            }
        }
        return nums[left];
    }
}
http://www.dtcms.com/a/73258.html

相关文章:

  • 2025 香港 Web3 嘉年华:全球 Web3 生态的年度盛会
  • 如何进行前端项目的自动化部署?请简述主要流程和常用工具。
  • 电子电气架构 --- 智能座舱和车载基础软件简介
  • Qt 窗口以及菜单栏介绍
  • 谷歌搜索基本规则
  • 算法014——找到字符串中所有字母异位词
  • C++|构造函数和析构函数
  • 基于PHP的网店进销存管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 练习-依依的询问最小值(前缀和差分)
  • C语言之链表
  • NocoBase 本周更新汇总:双因素身份认证(2FA)
  • HTML 字符集
  • Kubernetes的组成和架构
  • 一个简单的 **猜数字游戏** 的 C 语言例程
  • Java 用循环嵌套语句生成*三角形阵列
  • Vue3组件+leaflet,实现重叠marker的Popup切换显示
  • 51单片机的工作过程
  • Vue-Router:构建单页面应用的路由管理利器
  • 向量数据库技术系列四-FAISS介绍
  • three.js解决非全屏射线位置错误问题
  • 第三章:大模型中的提示学习
  • 蓝桥杯备考:图论之Prim算法
  • 2.3 滑动窗口专题:最大连续1的个数 III(LeetCode 1004)
  • PostgreSQL技术大讲堂 - 第82讲,主题:数据安全利器--密码安全策略构建
  • SpringBoot 和vue前后端配合开发网页拼图10关游戏源码技术分享
  • c++图论(一)之图论的起源和图的概念
  • 易语言模拟真人鼠标轨迹算法
  • 2025年渗透测试面试题总结-某四字大厂实习面试复盘 一面 三面(题目+回答)
  • Amazon Quantum Ledger Database (QLDB):革新数据可信记录的终极解决方案
  • (C语言)写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和(递归函数)