1095. 山脉数组中查找目标值
目录
- 题目
- 解法
- lambda在这是怎么用的?
题目
(这是一个 交互式问题 )
你可以将一个数组 arr 称为 山脉数组 当且仅当:
arr.length >= 3
存在一些 0 < i < arr.length - 1 的 i 使得:
arr[0] < arr[1] < … < arr[i - 1] < arr[i]
arr[i] > arr[i + 1] > … > arr[arr.length - 1]
给定一个山脉数组 mountainArr ,返回 最小 的 index 使得 mountainArr.get(index) == target。如果不存在这样的 index,返回 -1 。
你无法直接访问山脉数组。你只能使用 MountainArray 接口来访问数组:
MountainArray.get(k) 返回数组中下标为 k 的元素(从 0 开始)。
MountainArray.length() 返回数组的长度。
调用 MountainArray.get 超过 100 次的提交会被判定为错误答案。此外,任何试图绕过在线评测的解决方案都将导致取消资格。
解法
class Solution {int binary_search(MountainArray &mountain, int target, int l, int r, int key(int)) {target = key(target);while (l <= r) {int mid = (l + r) / 2;int cur = key(mountain.get(mid));if (cur == target) {return mid;} else if (cur < target) {l = mid + 1;} else {r = mid - 1;}}return -1;}
public:int findInMountainArray(int target, MountainArray &mountainArr) {int l = 0, r = mountainArr.length() - 1;while (l < r) {int mid = (l + r) / 2;if (mountainArr.get(mid) < mountainArr.get(mid + 1)) {l = mid + 1;} else {r = mid;}}int peak = l;int index = binary_search(mountainArr, target, 0, peak, [](int x) -> int{return x;});if (index != -1) {return index;}return binary_search(mountainArr, target, peak + 1, mountainArr.length() - 1, [](int x) -> int{return -x;});}
};
lambda在这是怎么用的?
int index = binary_search(mountainArr, target, 0, peak, [](int x) -> int{return x;});
[](int x)是输入类型,得到返回类型
0到peak时升序,key(x)=int{return x;},peak+1到length-1降序,key(x)=int{return -x;}这样左右公用一个函数
在降序的时候,比较规则就不一样了,函数也需要重写,用这种方法可以少写一个函数
key 是一个函数指针,它指向一个函数,该函数接受一个整数参数并返回一个整数值。在这个代码片段中,key 函数的作用是对目标值 target 和数组中的元素进行转换,以满足二分查找的要求。
相关文章:
1095. 山脉数组中查找目标值
目录 题目解法lambda在这是怎么用的? 题目 (这是一个 交互式问题 ) 你可以将一个数组 arr 称为 山脉数组 当且仅当: arr.length > 3 存在一些 0 < i < arr.length - 1 的 i 使得: arr[0] < arr[1] <…...

【深度学习】InstantIR:图片高清化修复
InstantIR——借助即时生成参考的盲图像修复新方法 作者:Jen-Yuan Huang 等 近年来,随着深度学习和计算机视觉技术的飞速发展,图像修复技术取得了令人瞩目的进步。然而,对于未知或复杂退化的图像进行修复,仍然是一个充满挑战的任务。针对这一难题,研究者们提出了 Insta…...

推荐一款PowerPoint转Flash工具:iSpring Suite
iSpring Suite是一款PowerPoint转Flash工具,使用iSpring Suite 8可以轻松的将PPT演示文档转换为对Web友好的Flash影片格式。软件界面简洁,使用方便。为什么要转换成flash格式呢?Flash格式的最大特点是体积小巧、易于分发,兼容所有的操作系统…...

如何搭建汽车行业AI知识库:定义+好处+方法步骤
在汽车行业,大型车企面临着员工众多、价值链长、技术密集和知识传播难等挑战。如何通过有效的知识沉淀与应用,提升各部门协同效率,快速响应客户咨询,降低销售成本,并开启体系化、可持续性的知识管理建设,成…...

创新材料科技:铜冷却壁助力高炉节能降耗
高炉用铜冷却壁是高炉内部的一种构件,通常用于高炉的炉身部分。它的主要功能是在高炉冶炼过程中冷却炉壁,以防止炉壁过热。铜冷却壁通常由铜制成,因为铜具有良好的导热性和耐腐蚀性,能够有效地将热量从高炉内部传导到外部…...

Proteus中单片机IO口外接LED输出低电平时,引脚却一直保持高电平的问题(已解决)
文章目录 前言解决方法后记 前言 一个排阻接八个 LED,方便又省事,但出现了P1端口输出低电平后,仿真引脚却一直显示红色保持高电平不变,用电压表测量显示 2V 左右。 这是仿真的问题,在用开发板时是不会遇到的ÿ…...
Obsidian vs Typora
引言 近来几日,自己也算是用了一段时间的Obsidian了,也是有资格来说一下使用感受了。当前感觉是自己未来很长一段时间将会一直使用Obsidian了。 Typora vs Obsidian Typora 优点 整体好看,简洁,所见即所得 缺点:…...

非线性数据结构之图
一、有向图(Directed Graph) 1. 定义 有向图是一个由顶点(节点)和有方向的边(弧)组成的图。在有向图中,每条边都有一个起点和一个终点,表示从一个顶点到另一个顶点的关系。 2. 特…...

vue3项目history模式部署404处理,使用 historyApiFallback 中间件支持单页面应用路由
vue3项目history模式部署404处理,使用 historyApiFallback 中间件支持单页面应用路由 在现代的 web 开发中,单页面应用(SPA)变得越来越流行。这类应用通常依赖于客户端路由来提供流畅的用户体验,但在服务器端…...
不同的科技查新机构之间有什么区别?
科技查新,作为一种确保科研项目新颖性、先进性的重要手段,在现代科研活动中扮演着至关重要的角色。然而,在众多提供科技查新服务的机构中,它们之间的区别究竟体现在哪些方面呢?本文将从服务内容、专业领域、权威性与客…...

Pycharm,2024最新专业版下载安装配置详细教程!
先来一段官方介绍,PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能…...
BERT预训练的MLM和NSP任务的损失函数都是什么?
引言 BERT预训练过程中包括两个主要任务:Masked Language Modeling(MLM) 和 Next Sentence Prediction(NSP)。 MLM损失函数: 在MLM任务中,模型需要根据上下文预测被MASK掉的词语。具体来说,输入序列中的一部分词语被随机MASK,模型需要依据未被MASK的词语来预测这些被MASK…...

微信发布测试版4.0,碰瓷NT版QQ?
不知有没有小伙伴发现,就在最近,微信推出了全新版本:4.0.0测试版本,张小龙,你在搞什么飞机? 有什么新活儿了嘛 记得上一次发布腾讯QQ的NT版本,在网上也是引发了不小的吐槽。很多网友戏称为“脑瘫”版本&am…...

数据库->视图
目录 一、视图 1.什么是视图 编辑 2.创建视图 1.语法 3.使用视图 4.视图的功能 1.屏蔽相关字段 2.对外提供统一访问规范 3.视图和真实表进行表连接查询 5.修改数据 6.注意事项 7.删除视图 1.语法 8.视图的优点 1. 简单性 2. 安全性 3. 逻辑数据独⽴性 4. 重…...

华为HarmonyOS打造开放、合规的广告生态 - 贴片广告
场景介绍 贴片广告是一种在视频播放前、视频播放中或视频播放结束后插入的视频或图片广告。 接口说明 接口名 描述 loadAd(adParam: AdRequestParams, adOptions: AdOptions, listener: AdLoadListener): void 请求单广告位广告,通过AdRequestParams、AdOptions…...
vue3 v-for循环子组件上绑定ref并且取值
vue3 v-for循环子组件上绑定ref并且取值 // 要循环的变量 const views ref([])// 数组存所有ref dom const itemsRef ref([])const refresh (index) > {// 取出ref dom子组件并且调用其方法itemsRef.value[index].initChart() }<div class"block" v-for&quo…...

GitHub个人主页美化
效果展示 展示为静态效果,动态效果请查看我的GitHub页面 创建GitHub仓库 创建与GitHub用户名相同的仓库,当仓库名与用户名相同时,此仓库会被视作特殊仓库,其README.md(自述文件)会展示在GitHub个人主页…...
云短信平台优惠活动
题目描述 某云短信厂商,为庆祝国庆,推出充值优惠活动。 现在给出客户预算,和优惠售价序列,求最多可获得的短信总条数。 输入描述: 第一行客户预算 M M M,其中 0 < M < 1000000 0<M<100000…...
Pyecharts使用本地文件绘制美国地图
访问我的github仓库outer_resources中的USA.json文件: big_data_analysis/outer_resources/USA.json at main Just-A-Freshman/big_data_analysis 保存到当前目录下; 随后运行代码: from pyecharts import options as opts from pyecharts.charts import Map from pyechar…...
lanqiaoOJ 3255:重新排队 ← STL list 单链表
【题目来源】https://www.lanqiao.cn/problems/3255/learning/【题目描述】给定按从小到大的顺序排列的数字 1 到 n,随后对它们进行 m 次操作,每次将一个数字 x 移动到数字 y 之前或之后。请输出完成这 m 次操作后它们的顺序。【输入格式】第一行为两个数…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...