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

Leetcode 162.寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。

给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。

你可以假设 nums[-1] = nums[n] = -∞ 。

你必须实现时间复杂度为 O(log n) 的算法来解决此问题。

示例 1:

输入:nums = [1,2,3,1]
输出:2
解释:3 是峰值元素,你的函数应该返回其索引 2。

示例 2:

输入:nums = [1,2,1,3,5,6,4]
输出:1 或 5 
解释:你的函数可以返回索引 1,其峰值元素为 2;或者返回索引 5, 其峰值元素为 6。

提示:

  • 1 <= nums.length <= 1000
  • -231 <= nums[i] <= 231 - 1
  • 对于所有有效的 i 都有 nums[i] != nums[i + 1]

思路:寻找峰值,最大值就一定是峰值,但这样遍历是行不通的,复杂度就到了O(n),所以每次操作必须寻找减小范围的方法,其核心就是找到规律,该题必有峰值,因为边界是无限小,而且一个节点左右节点都是不相同的,一个节点的峰值情况,无非三种情况,左小右小,那么该值就是峰值,左小右大,那么峰值必在右边因为有上升就必然会下降,最坏情况就是到边界下降到无穷小。所以按此规律,可以直接进行范围缩小。代码如下:和基本二分类似。

class Solution {public int findPeakElement(int[] nums) {// 由于数组边界是无穷小,所以一个元素i,如果i大于两侧,那么他就是峰值// 如果右侧大于i,右侧就必有峰值,左侧同理,这种情况就可以使用二分思想int leftIndex = 0;int rightIndex = nums.length - 1;while (true) {int middleIndex = (leftIndex + rightIndex) / 2;if (compare(nums, middleIndex, middleIndex-1) && compare(nums, middleIndex, middleIndex+1)) {return middleIndex;    } else if (nums[middleIndex+1] > nums[middleIndex]) {leftIndex = middleIndex + 1;} else {rightIndex = middleIndex - 1;}}}// 由于数据中可能会有int的最小值,所以必须写比较函数public boolean compare(int[] nums, int index1, int index2) {if (index1 < 0 || index1 >= nums.length) {return false;}if (index2 < 0 || index2 >= nums.length) {return true;}return getNum(index1, nums) > getNum(index2, nums);}public int getNum(int index, int[] nums) {return nums[index];}
}

相关文章:

Leetcode 162.寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复杂度为 O(…...

c语言:知识补充

c语言中编译开始会对#define&#xff0c;#include等内容做预处理&#xff0c;可以用#define写一些简单函数&#xff0c;方便使用 #include <stdio.h> #include <stdlib.h>#define MAX(A, B) ((A) > (B) ? (A) : (B))int main(){printf("%d\n", MAX(…...

Dapper介绍及特性

一、Dapper介绍及特性 Dapper是一个.NET平台上的轻量级对象关系映射&#xff08;ORM&#xff09;工具&#xff0c;它通过扩展IDbConnection接口&#xff0c;提供了一系列的扩展方法来执行SQL查询并将结果映射到.NET对象中。Dapper以其高性能和简单易用著称&#xff0c;特别适合…...

LeetCode 149. 直线上最多的点数

LeetCode 149. 直线上最多的点数 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1&#xff1a; 输入&#xff1a;points [[1,1],[2,2],[3,3]] 输出&#xff1a;3 示例 2&#xff1a; 输入&…...

案例研究丨国控星鲨利用DataEase释放数据潜能,重塑业务视野

国药控股星鲨制药&#xff08;厦门&#xff09;有限公司&#xff08;以下简称为国控星鲨&#xff09;始创于1952年&#xff0c;前身为厦门鱼肝油厂&#xff0c;距今已经有70余年历史&#xff0c;是国家商务部认定的“中华老字号”企业。2011年&#xff0c;国药控股与厦门轻工集…...

网络基础概念和 socket 编程

网络基础概念和 socket 编程 学习目标&#xff1a; 了解 OSI 七层模型、TCP/IP 四层模型结构了解常见的网络协议格式掌握网络字节序和主机字节序之间的转换理解 TCP 服务器端通信流程理解 TCP 客户端通信流程实现 TCP 服务器端和客户端的代码 推荐一个非常好的学习资料仓库 协…...

TypeScript 中的接口、泛型与自定义类型

TypeScript 是一种超集语言&#xff0c;它为 JavaScript 添加了静态类型检查。通过 TypeScript&#xff0c;开发者可以获得更好的工具支持&#xff0c;并且能够编写出更加健壮的代码。本文将探讨 TypeScript 中的几个关键特性&#xff1a;接口、泛型以及如何创建自定义类型。 …...

常州威雅学校:跟随这场音乐盛宴,溯回她的音乐之路

时同学 常州威雅2021届毕业生 英国皇家北方音乐学院 钢琴系 西太湖畔清凉的晚风送来阵阵悦耳的钢琴声&#xff0c;时同学在母校的个人钢琴独奏悄然拉开序幕。这是她自毕业三年后&#xff0c;在常州威雅的首场钢琴独奏会。 随着第一个音符落下&#xff0c;她用手指在黑白键盘…...

【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语句执行慢

本文内容来自YashanDB官网&#xff0c;具体内容请见https://www.yashandb.com/newsinfo/7459465.html?templateId1718516 问题现象 某局点yashandb cpu使用率100%&#xff0c;经线上分析是由于几个sql执行慢&#xff0c;其中一个sql为简单的单行等值绑定变量过滤排序。 经分…...

【有啥问啥】深度理解主动学习:机器学习的高效策略

深度理解主动学习&#xff1a;机器学习的高效策略 在大数据时代&#xff0c;数据量的爆炸性增长与有限的标注资源之间的矛盾日益凸显。如何高效地利用标注资源来训练高质量的模型&#xff0c;成为了机器学习领域亟待解决的问题。主动学习&#xff08;Active Learning, AL&…...

智能守护者X100 - 自动化生产线智能机器人安全监控管理系统

1.产品介绍 产品名称: 智能守护者X100 - 自动化生产线智能机器人安全监控管理系统 主要功能: 全方位实时监控:智能守护者X100采用高清摄像头与红外夜视技术,实现对自动化生产线及智能机器人的360无死角监控。系统能自动识别并追踪生产线上的机器人活动轨迹,确保生产安全…...

harmonyos面试题

你在项目中用过线程通信吗&#xff0c;线程是怎么进行通信的? 页面的生命周期有哪些? UAbility的生命周期呢? 你在项目中使用首选项主要用来数什么 组件通信的方式有息些 弹室UI是怎么在页面UI中使用的 常用的修饰符有愿些介绍一下 缓冲区是什么与16进制和数组有什么关…...

神经网络介绍及其在Python中的应用(一)

作者简介&#xff1a;热爱数据分析&#xff0c;学习Python、Stata、SPSS等统计语言的小高同学~ 个人主页&#xff1a;小高要坚强的博客 当前专栏&#xff1a;Python之机器学习 本文内容&#xff1a;神经网络介绍及其在Python中的线性回归应用 作者“三要”格言&#xff1a;要坚…...

数据流处理技术与Flink框架

一数据流 数据流定义&#xff1a; 数据流&#xff08;Data Stream&#xff09;是指数据以连续不断的方式到达和处理的序列。在现实世界中&#xff0c;许多数据来源都是以流的形式存在&#xff0c;比如&#xff1a; 1. 用户行为&#xff1a;用户在网站上的点击流、移动应用中…...

qt中QTatlewidget类常用操作表格的函数有哪些?

在Qt中&#xff0c;QTableWidget 类提供了丰富的函数来操作表格数据。以下是一些常用的操作表格的函数&#xff1a; 1. 初始化与配置 构造函数&#xff1a;QTableWidget(int rows, int columns, QWidget *parent nullptr)&#xff1a;创建一个指定行数和列数的表格控件。设置…...

Linux上的C/C++编程

Linux上的C/C编程 yum软件包管理器Linux编辑器-vimvim命令模式指令集vim末行模式指令集 gcc/g的使用Linux自动化编译工具-make/MakefileLinux调试器-gdb调试命令 多人合作工具git yum软件包管理器 yum 是Linux上常用的包管理器&#xff0c;类似于Windows上的“应用商店”。 语…...

注意 秋季饮酒的正确打开方式

选择合适的白酒1.秋季气候干燥&#xff0c;适合选择一些口感醇厚、温润的白酒。比如酱香型白酒&#xff0c;它具有浓郁的香气和醇厚的口感&#xff0c;能在秋季给你带来温暖的感觉。2.浓香型白酒也是不错的选择&#xff0c;香气扑鼻&#xff0c;口感绵甜&#xff0c;能为秋季增…...

Python如何配置环境变量详解

一、概述 前提&#xff1a;已安装 Python&#xff0c;如下图&#xff1a; 1.1 检查是否已配置成功&#xff08;选&#xff09; 1 2 3 4 5 1. 打开运行窗口 (1) 快捷键 : Win r&#xff0c;并输入 cmd (2) 直接输入: Python 2. 若有下列提示&#xff0c;即为 安装成功…...

Linux驱动开发(速记版)--并发与竞争

第十八章 并发与竞争 18.1 并发与竞争 18.1.1 并发 早期计算机 CPU单核心时&#xff0c;由于 CPU执行速度快于I/O操作&#xff0c;常因等待 I/O而空闲。 为提高 CPU利用率&#xff0c;引入了并发执行理论。并发通过算法在CPU执行I/O等待时切换至其他任务&#xff0c;使多个任…...

AI赋能,数字技术服务平台促进产业协同发展

在当今数字化浪潮席卷全球的时代&#xff0c;数字技术服务平台应运而生&#xff0c;成为推动各行业发展的强大引擎。数字技术服务平台是一个汇聚了众多先进数字技术和资源的综合性服务体系。它就像是一个功能强大的百宝箱&#xff0c;为用户提供了全方位的数字技术支持。 在这…...

RabbitMQ下载安装运行环境搭建

RabbitMQ运行环境搭建 1、Erlang及RabbitMQ安装版本的选择2、下载安装Erlang2.1、下载Erlang2.2、安装Erlang2.2.1、安装Erlang前先安装Linux依赖库2.2.2、解压Erlang压缩包文件2.2.3、配置2.2.4、编译2.2.5、安装2.2.6、验证erlang是否安装成功 3、RabbitMQ下载安装3.1、下载3…...

Redis过期时间删除策略详解

文章目录 Redis过期时间删除策略详解一、引言二、Redis过期键删除策略1、定时删除2、惰性删除3、定期删除 三、Redis实际采用的策略1、惰性删除Java 伪代码 2、定期删除Java 伪代码 四、总结 Redis过期时间删除策略详解 一、引言 在许多应用程序中&#xff0c;我们经常需要缓…...

mysql数据库的基本管理

目录 一.数据库的介绍 二.mariadb的安装 三.软件基本信息 四.数据库开启 五.数据库的安全初始化 六.数据库的基本管理 七.数据密码管理 八.用户授权 九.数据库的备份 十.web控制器 一.数据库的介绍 1.什么是数据库 数据库就是个高级的表格软件 2.常见数据库 Mysql Oracl…...

根据现有html里的元素上面动态创建el-tooltip组件并显示的几种方式

1、 在这个示例中&#xff0c;我们创建了一个 ref 引用来指向我们想要附加 Tooltip 的 DOM 元素。然后在 onMounted 生命周期钩子中&#xff0c;我们创建了 Tooltip 组件的实例&#xff0c;并将其挂载到一个新创建的 DOM 元素上。我们还在触发元素上添加了 mouseenter 和 mouse…...

【C++篇】迈入新世界的大门——初识C++(上篇)

文章目录 前言 下篇已出&#xff1a;【C篇】迈入新世界的大门——初识C(下篇&#xff09; C发展历史 C起源 与C语言一样&#xff0c;C也是在贝尔实验室诞生的&#xff0c;Bjarne Stroustrup于20世纪80年代在这里开发出了这种语言。Stroustrup比较关系的是让C更有用&#xff0…...

啥?Bing搜索古早BUG至今未改?

首先&#xff0c;大家先看下面的一个数学公式。 Γ ( z ) ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)∫0∞​tz−1e−tdt. 看不懂&#xff1f;没关系&#xff0c;因为我也看不懂 这不是谈论的重点。 当你把鼠标光标移到公式的最开头&…...

ValueError: Out of range float values are not JSON compliant

可能原因一 可能原因二 数据里面有NaN...

【架构】NewSQL

文章目录 NewSQLTiDBTiDB 主要组件特点使用场景安装与部署 推荐阅读 NewSQL NewSQL是一种数据库管理系统(DBMS)的类别&#xff0c;它结合了NoSQL数据库的可扩展性和传统SQL数据库的事务一致性。具体来说&#xff0c;NewSQL数据库旨在解决传统关系型数据库在处理大规模并发事务…...

禁止吸烟监测系统 基于图像处理的吸烟检测系统 YOLOv7

吸烟是引发火灾的重要原因之一。烟头在未熄灭的情况下&#xff0c;其表面温度可达200℃-300℃&#xff0c;中心温度甚至能高达700℃-800℃。在易燃、易爆的生产环境中&#xff0c;如化工厂、加油站、仓库等&#xff0c;一个小小的烟头就可能引发灾难性的火灾&#xff0c;造成巨…...

《中国工程科学》

《中国工程科学》为工程科技战略咨询学术期刊&#xff0c;主要发布我国工程科技战略咨询研究成果&#xff0c;以及工程科技各领域前瞻性综合研究成果&#xff0c;为政府科学决策提供参谋、为行业科学发展提供指导、为相关学术研究提供参考。 一、2024年度征稿主题 本刊以专题…...