news 2026/6/15 19:37:10

山脉二分找中值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
山脉二分找中值

lc

lc1095

山脉数组 两次二分

先二分查找山脉数组的峰值位置

再在峰值左侧升序区间和右侧降序区间分别二分查找目标值

优先返回左侧找到的索引

/**
* // This is the MountainArray's API interface.
* // You should not implement it, or speculate about its implementation
* class MountainArray {
* public:
* int get(int index);
* int length();
* };
*/

class Solution
{
public:
int binary_search(MountainArray & mountainArr, int target, int L, int R, int sign)
{
target = sign * target;
while (L <= R)
{
int mid = (L + R) >> 1;
int cur = sign * mountainArr.get(mid);
if (cur == target)
return mid;
else if (cur < target)
L = mid + 1;
else
R = mid - 1;
}
return -1;
}

int findInMountainArray(int target, MountainArray &mountainArr)
{
int L = 0, R = mountainArr.length() - 1;
while (L <= R)
{
int mid = (L + R) >> 1;
if (mountainArr.get(mid) < mountainArr.get(mid + 1))
L = mid + 1;
else
R = mid-1;
}
int peak_idx = L;
int idx = binary_search(mountainArr, target, 0, peak_idx, 1 );
if (idx != -1)
return idx;
return binary_search(mountainArr, target, peak_idx + 1, mountainArr.length() - 1, -1 );

}
};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:07:50

PDF-Extract-Kit保姆级指南:定期任务与自动化

PDF-Extract-Kit保姆级指南&#xff1a;定期任务与自动化 1. 引言 1.1 业务场景描述 在日常工作中&#xff0c;许多企业和个人需要处理大量PDF文档&#xff0c;如学术论文、财务报表、合同文件等。这些文档中包含丰富的结构化信息&#xff08;表格&#xff09;、数学公式、文…

作者头像 李华
网站建设 2026/6/15 13:17:34

开源赋能成长!AtomGit「源启高校」走进成都信息工程大学

当开源成为科技行业的创新基石&#xff0c;当高校成为人才培育的核心阵地&#xff0c;一场连接产业前沿与校园学习的技术盛宴如约而至&#xff01;12 月 16 日至 1 月 6 日&#xff0c;AtomGit「源启高校」计划走进成都信息工程大学&#xff0c;连续四周的开源通识课&#xff0…

作者头像 李华
网站建设 2026/6/15 12:18:00

PDF-Extract-Kit持续集成:CI/CD流水线配置

PDF-Extract-Kit持续集成&#xff1a;CI/CD流水线配置 1. 背景与目标 1.1 项目背景 PDF-Extract-Kit 是一个基于深度学习的 PDF 智能内容提取工具箱&#xff0c;由开发者“科哥”二次开发构建。该工具集成了布局检测、公式识别、OCR 文字提取、表格解析等核心功能&#xff0…

作者头像 李华