news 2026/4/15 2:51:32

二分猜答案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二分猜答案

二分

前后缀分解

lc786

二分查找分数值范围,统计小于等于中间值的分数个数,定位第k小的素数分数并返回

#include <vector>
using namespace std;

class Solution {
private:
vector<int> arr;
int n, a, b;
public:
vector<int> kthSmallestPrimeFraction(vector<int>& _arr, int k) {
arr = _arr;
n = arr.size();
double l = 0, r = 1;
while (true) {
double mid = (l + r) / 2;
int cnt = check(mid);
if (cnt > k) r = mid;
else if (cnt < k) l = mid;
else break;
}
return {a, b};
}
private:
int check(double x) {
int ans = 0;
double large = 0;
for (int i = 0, j = 1; j < n; j++) {
while (arr[i + 1] * 1.0 / arr[j] <= x)
i++;

if (arr[i] * 1.0 / arr[j] <= x) {
ans += i + 1;
if (arr[i] * 1.0 / arr[j] > large) {
a = arr[i];
b = arr[j];
large = arr[i] * 1.0 / arr[j];
}
}
}
return ans;
}
};
核心逻辑:用二分查找定位“第k小的素数分数”,不用暴力枚举所有分数,效率更高

1. 前提:输入数组是从小到大排序的素数,要找的是“两个素数相除(分子在前、分母在后,分子<分母)”中第k小的那个分数(比如数组[2,3,5],分数有2/3、2/5、3/5,第2小是2/5)

2. 二分查找的是什么?

不直接找分数,而是找“分数的数值大小”。因为所有可能的分数都在 0~1 之间(分子<分母),所以在 [0,1] 区间里二分:

- 每次取中间值 mid ,统计“所有小于等于 mid 的分数有多少个”(用 check 函数算)

- 如果统计数 >k:说明第k小的分数比 mid 小,缩小右边界;

- 如果统计数 <k:说明第k小的分数比 mid 大,扩大左边界;

- 统计数 ==k:说明 mid 刚好“卡”在第k小的分数上,找到目标。

3. check函数怎么统计?

用“双指针”高效计数(不用两两枚举,避免超时):

- 固定分母 j ,找最大的分子 i 使得 arr[i]/arr[j] ≤ mid (因为数组有序, i 越大,分数越大);

- 此时, i+1 就是以 arr[j] 为分母、满足条件的分数个数(分子可以是 arr[0]~arr[i] );

- 同时记录这些分数中最大的那个(因为统计数==k时,这个最大分数就是第k小的目标)。

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

信使(msner)(信息学奥赛一本通- P1376)四种做法

【题目描述】战争时期&#xff0c;前线有n个哨所&#xff0c;每个哨所可能会与其他若干个哨所之间有通信联系。信使负责在哨所之间传递信息&#xff0c;当然&#xff0c;这是要花费一定时间的&#xff08;以天为单位&#xff09;。指挥部设在第一个哨所。当指挥部下达一个命令后…

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

Nomad ZBrush:GSC 模型制作教程

Nomad & ZBrush&#xff1a;GSC 模型制作教程课程基本信息- 发布时间&#xff1a;2026年1月 - 类别&#xff1a;设计类 - 格式与规格&#xff1a;MP4 格式 1920x1080 分辨率 - 语言&#xff1a;英语 - 时长&#xff1a;15小时 - 大小&#xff1a;22GB - 副标题&#xff1…

作者头像 李华
网站建设 2026/4/15 12:22:29

TOTOLINK EX200存在未修复固件漏洞可被完全远程接管

CERT协调中心(CERT/CC)披露了影响TOTOLINK EX200无线信号扩展器的未修复安全漏洞详情&#xff0c;该漏洞可能允许经过身份验证的远程攻击者完全控制设备。该漏洞编号为CVE-2025-65606(CVSS评分&#xff1a;暂无)&#xff0c;被描述为固件上传错误处理逻辑中的缺陷&#xff0c;可…

作者头像 李华
网站建设 2026/4/15 9:44:36

Ring推出Fire Watch功能,利用家庭摄像头追踪野火威胁

洛杉矶大火一年后&#xff0c;亚马逊Ring安防服务宣布推出名为Fire Watch的新功能&#xff0c;旨在减轻未来野火风险。Fire Watch与CES 2026同期发布&#xff0c;是Ring应用程序Neighbors社区安全更新板块的新功能&#xff0c;计划今年春季在全国范围内推出。Fire Watch依托Wat…

作者头像 李华
网站建设 2026/4/15 12:25:26

机器海龟游向环保使命:仿生技术守护珊瑚礁

在自然环境中与海龟一起游泳是一种令人敬畏的体验。这些温和的生物以其深思熟虑且小心的鳍状肢划水方式在水下世界中航行&#xff0c;观看起来完全令人着迷。这是一种独特的运动方式——当我在CES 2026展会现场看到Beatbot公司的RoboTurtle在水箱中游泳时&#xff0c;我立刻意识…

作者头像 李华
网站建设 2026/4/15 7:13:16

零基础 | LangChain 构建大模型应用的开发框架

文章目录&#x1f4c4; 基本信息&#x1f680; LangChain框架概述核心定位生态系统核心价值使用建议选择考量&#x1f9e9; LangChain核心抽象详解核心抽象组件ChatModel详解PromptTemplate详解OutputParser详解核心抽象的价值&#x1f4dd; 使用示例运行结果&#x1f3af; 功能…

作者头像 李华