求局部最小值

news/2025/9/29 17:07:45/文章来源:https://www.cnblogs.com/tianzhentian/p/19119127

局部最小值
题目:给定一个数组,每两个相邻的数组不等,找到该数组上任意一个局部最小值。
定义: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.mzph.cn/news/922031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Element-UI的transfer穿梭框组件数据量大解决方案

一、面临问题 数据量大,渲染慢,搜索、勾选、关闭、右移卡顿 二、解决方案 1. 总体思路 改写 Element-UI 的 transfer 穿梭框组件,形成自己的自定义组件 2. 具体步骤 2.1 复制 Element-UI 的 transfer 穿梭框组件出来…

第9章 day09 hook插件

二. hook插件 1.概念 在JavaScript中,hook是一种能够拦截和修改函数或方法行为的技术。通过使用hook,开发者可以在现有的函数执行前、执行后或者替换函数的实现逻辑。hook目的是找到函数入口以及一些参数变化,便于分…

nginx 一致性hash和流量检查模块

nginx-module-vts:这是一个Nginx的监控模块,能够收集Nginx自身详细的虚拟主机流量状态信息,如请求次数、响应字节、响应时间等,并以JSON、HTML或Prometheus格式输出。nginx-vts-exporter依赖于这个模块。nginx-vts…

网站开发的试用期条款疏肝益阳胶囊有哪些功效与作用

阿里妹导读&#xff1a;日常工作中&#xff0c;我们多少都会遇到应用的性能问题。在阿里面试中&#xff0c;性能优化也是常被问到的题目&#xff0c;用来考察是否有实际的线上问题处理经验。面对这类问题&#xff0c;阿里工程师齐光给出了详细流程。来阿里面试前&#xff0c;先…

深入解析:10月底实习准备-Mysql(按面试频率准备)

深入解析:10月底实习准备-Mysql(按面试频率准备)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

CEXE的%你赛5-题解

T1 简单 dfs,记录数组 \(vis\) 表示一个点有没有被搜索过,从小到大遍历 \(vis\),如果 \(vis_i=0\) 则从 \(i\) 开始遍历图,遍历时记录答案即可。 #include<bits/stdc++.h> using namespace std; int n,m; lo…

C++语言(1)

.数制的前缀 二进制:0b或0B。 八进制:0。注意代码中012的十进制数值是10。 十六进制:0x(字母小写)或0X(字母小写)。 .输入和输出 .1.scanf和printf 格式符 常见类型的格式符:类型 格式符int %dlong long %llds…

Windows多人共享文件夹全流程,附2025新共享文件快90%

针对传统Windows共享文件夹设置繁琐、不安全、仅限局域网的痛点,本文提出用坚果云创建多人共享文件夹。其操作简便,支持跨地域协作、精细权限管理与文件版本回溯,无缝替代传统方式,是实现团队安全、高效协同办公的…

第11章 day11-day12关于json请求体/逆向爬虫实战

第1知识点:关于json请求体 第2知识点:关于精准请求(如何排除干扰请求) 第3知识点:入口定位 一、关键字方法 (1) 方法关键字 encrypt decrypt (2) key关键字 第4知识点:断点与断点调试 普通断点 XHR断点 条件断点…

容斥与二项式反演

先挖坑,后填坑。容斥 容斥,实际上就是用总的方案数减去不合法的方案数。 我们考虑以下组合恒等式: \[\sum_{i = 0}^{n} (-1) ^ {i} C_{n}^{i} = [n = 0] \]为什么这个式子跟容斥有关呢? 我们考虑不合法的数量为 \(…

网上怎样做电缆网站建设网站公司怎么建站

centos7 mysql 基本测试&#xff08;7&#xff09;主从并行简单测试 重启MySQL服务使配置生效。 注意&#xff1a;并行复制需要slave的硬件资源充足&#xff0c;并且确保网络通信和IO性能不是瓶颈。不是所有的应用场景都适合并行复制&#xff0c;比如写密集型应用或者slave负…

react useCallback Hook详解

什么是 useCallback Hook? useCallback 是一个 React Hook,用于缓存函数,防止函数在每次组件渲染时被重新创建。它的主要目的是优化性能,特别是在将函数作为 props 传递给子组件或在依赖数组中使用时。 简单来说,…

从Docker构建失败到CRA被淘汰:一个React项目的ES模块探索记录

开头 最近给一个React项目配Docker构建,碰到了一个看起来简单实际很麻烦的错误: Failed to compile. The target environment doesnt support dynamic import() syntax so its not possible to use external type mo…

充气泵PCBA方案中数字传感器和模拟传感器的差异

充气泵的核心需求是实时、准确检测气罐/充气对象(如轮胎、泳圈)的压力,并根据压力值控制电机启停(如达到目标压力后停机),二者的应用差异直接影响产品体验:1.模拟传感器的应用场景低成本入门级充气泵(如家用小…

实用指南:小米17手机的上市公司供应商

实用指南:小米17手机的上市公司供应商pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

小程序支付遇到:system:access_denied

小程序支付遇到:system:access_denied 原因: 小程序支付,只能用手机微信测试,不能用电脑。 -

cloudfared 内网穿透经过docker方式遇到的问题

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CDN + WAF + CLB + Higress 架构下的 TLS 加解密详细解析(适用阿里云)

在云环境中,Web 应用常见架构是:用户 → CDN → WAF → CLB → ECS/Higress本文详细解析 WAF 在网络拓扑中的位置、TLS 加解密流程、回源逻辑,以及自定义接入模式下的注意事项,结合阿里云官方推荐实践。1.WAF 在网…

react useMemo Hook详解

什么是 useMemo Hook? useMemo 是一个 React Hook,用于缓存计算结果,避免在每次组件渲染时重复执行昂贵的计算。它通过记忆计算的值,只有在依赖项变化时才会重新计算,从而优化性能。 简单来说,useMemo 让你的计算…

门户网站改版建议wordpress 调用热门 文章

文章目录 1.liunx简介2.liunx的jdk安装2.liunx的tomcat安装3.liunx的mysql安装4.单机项目部署 1.liunx简介 Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff09;&#xff0c;是一种免费…