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

求局部最小值

局部最小值
题目:给定一个数组,每两个相邻的数组不等,找到该数组上任意一个局部最小值。
定义:nums[1] > nums[0]
nums[len(nums) - 2] > nums[len(nums) - 1]
nums[n-1] > nums[n] && nums[n] < nums[n+1]

题目解析

通过上面的定义已知三种情况

  1. 第一个数小于第二个数
  2. 最后一个数小于倒数第二个数
    3.左右两边的数都比中间这个数大
    第一种和第二种很好判断,关键在于第三种情况。如果出现第三种情况说明不符合第一种和第二种情况。也就是说nums[1] < nums[0] 和nums[n-1] < nums[n] && nums[n] > nums[n+1].
    第一个数比第二个数大,说明他是向下的趋势。最后一个比倒数第二个大,说明是向上的趋势。那么先向下再向上必然存在局部最小值。
    画图解析:
    IMG_0038
    必然存在局部最小值。
# 求局部最小值
def part_most_min(nums):if nums is None or len(nums) == 0:return -1if len(nums) == 1:return 0# 检查左边界if nums[0] < nums[1]:return 0# 检查右边界if nums[-1] < nums[-2]:return len(nums) - 1left, right = 1, len(nums) - 2while left <= right:mid = left + (right - left) // 2# 如果中间元素比两边都小,就是局部最小值if nums[mid] < nums[mid - 1] and nums[mid] < nums[mid + 1]:return mid# 如果中间元素比左边大,局部最小值在左边elif nums[mid] > nums[mid - 1]:right = mid - 1# 如果中间元素比右边大,局部最小值在右边else:left = mid + 1return left
http://www.zskr.cn/news/14005.html

相关文章:

  • Element-UI的transfer穿梭框组件数据量大解决方案
  • 【软件系统架构】系列七:系统性能——操作系统性能深入解析 - 实践
  • Linux 生成随机端口
  • 并发编程可见性
  • VsCode Ai插件
  • 写入方式、COW 与写放大
  • 黄金分割比
  • how create rhel8 local repository server
  • 借助Aspose.Email,使用 Python 读取 Outlook MSG 文件
  • 文件同步工具深度测评(2025版):同步盘夺冠
  • Oracle故障处理:数据库启动时遇到ORA-01578错误
  • AGC073C 赛后补题记录
  • 深入解析:【深度学习计算机视觉】03:目标检测和边界框
  • leetCode刷题记录1
  • 【Bluedroid】A2DP Source 音频流暂停流程解析[5]:停止流程及资源管理机制(btif_a2dp_source_stop_audio_req) - 教程
  • 【IEEE-CPS出版】2025年数据管理与计算机科学国际学术会议(ICDMCS 2025)
  • 实用指南:Unity单元测试:C语言轻量级框架实战
  • 【ACM出版】第五届管理科学和软件工程国际学术会议(ICMSSE 2025)
  • 标签化模板之styled-components原理
  • Halcon基础——图像增强
  • Day24接口的定义与实现
  • 题解:CF2146D2 Max Sum OR (Hard Version)
  • NVIDIA 开源 Audio2Face:音频生成逼真面部动画;Gemini Live API 支持思考能力 丨日报
  • 个人用云计算学习笔记 --14( Linux 逻辑卷管理、Linux 交换空间管理) - 教程
  • Print Conductor打印软件安装教程!一款非常好用的批量打印软件!支持PDF、Word、Excel、图片等
  • Python 面向对象编程基础:类与对象初体验
  • Drools 7.0基础环境搭建
  • 基于微信小程序的旅游景点体系【2026最新】
  • 反电动势法控制BLDC电机的原理图分析
  • 2025内网聊天工具排行 4款好用的内网聊天软件推荐