5. 1201.丑数III(中等)

1201. 丑数 III - 力扣(LeetCode)

思想

1.丑数是可以被 a b c 整除的 正整数
给你四个整数:nabc ,请你设计一个算法来找出第 n 个丑数。
2.此题是4. 878.第N个神奇数字的进阶版,从两个数的容斥原理变成三个数的容斥原理,同理即可

代码

c++:

class Solution {
public:bool check(int n, int a, int b, int c, long long bei_ab, long long bei_ac,long long bei_bc, long long bei_abc, long long mid) {long long cnt = 0;cnt = mid / a + mid / b + mid / c - mid / bei_ab - mid / bei_ac -mid / bei_bc + mid / bei_abc;if (cnt >= n)return true;elsereturn false;}long long gcd(int a, int b) {if (b == 0)return a;return gcd(b, a % b);}int nthUglyNumber(int n, int a, int b, int c) {long long bei_ab = 1LL * a / gcd(a, b) * b;long long bei_ac = 1LL * a / gcd(a, c) * c;long long bei_bc = 1LL * b / gcd(b, c) * c;long long bei_abc = 1LL * bei_ab / gcd(bei_ab, c) * c;long long left = min({a, b, c}), right = min({a, b, c}) * n, res = 0;while (left <= right) {long long mid = left + ((right - left) >> 1);if (check(n, a, b, c, bei_ab, bei_ac, bei_bc, bei_abc, mid)) {res = mid;right = mid - 1;} elseleft = mid + 1;}return res;}
};
6. 373.查找和最小的K对数字(中等,学习优先队列小顶堆)

373. 查找和最小的 K 对数字 - 力扣(LeetCode)

思想

1.给定两个以 非递减顺序排列 的整数数组 nums1nums2 , 以及一个整数 k
定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2
请找到和最小的 k 个数对 (u1,v1), (u2,v2)(uk,vk)
2.一开始想的是二分答案和最小的第k个和,但是check函数里面双指针不好写判断,所以学习优先队列最小堆写法
3.因为是按照和最小排序,所以最小堆比较的元素一定是和,即priority_queue的第一个元素是和,但是也要记录下标(i,j)从而能访问下一个元素,所以优先队列里面元素是三元组turple<int,int,int>,而优先队列默认是升序最大堆,且没有三元组的降序最小堆写法,需自己写,为了简单存入和的负值即可
接下来考虑入堆,目前元素为(i,j),下一个入堆元素为(i+1,j)或者(i,j+1),但是会出现一个问题,(i+1,j)入堆,然后(i+1,j+1)入堆,而如果(i,j+1)入堆,然后(i+1,j+1)又会入堆一次,导致(i+1,j+1)入堆两次,解决办法是先让所有(i,0)入堆(数量小于k),然后接下来入堆的只有(i,j+1)了(即固定i更新j)

代码

c++:

class Solution {
public:vector<vector<int>> kSmallestPairs(vector<int>& nums1, vector<int>& nums2,int k) {int n1 = nums1.size(), n2 = nums2.size();priority_queue<tuple<int, int, int>> pq;vector<vector<int>> res;for (int i = 0; i < min(n1, k); ++i) {pq.emplace(-nums1[i] - nums2[0], i, 0); // 先让所有(i,0)入堆,因为是小根堆,所以放负值}while (res.size() < k && !pq.empty()) {auto t = pq.top();pq.pop();int i = get<1>(t), j = get<2>(t);res.push_back({nums1[i], nums2[j]});if (j + 1 < n2)pq.emplace(-nums1[i] - nums2[j + 1], i, j + 1); //优先队列不是顺序访问,所以不用加back}return res;}
};

学习:
1.三元组tuple<int,int,int> t,访问三个元素get<0/1/2>(t)
2.vector,deque,list这些顺序访问才是push_backemplace_back,且vector<vector<int>>插入一整行要用push_back({i,j}),不能用emplace_back(i,j)
prioriyt_queue这些非顺序访问是emplace

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/84685.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/84685.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/84685.shtml

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

相关文章

Appium+python自动化(二十一)- Monkey指令操作手机

第一式 - 隐藏命令 monkey隐藏的两个命令&#xff1a; –pck-blacklist-file<黑名单文件><br><br>–pck-whitelist-file<白名单文件> monkey还有一个隐藏的命令那就是&#xff1a; –f<脚本文件>:可以指定monkey的自定义脚本 一般monkey测试…

微信小程序动态效果实战指南:从悬浮云朵到丝滑列表加载

小红书爆款交互设计解析&#xff0c;附完整代码&#xff01; &#x1f525; 一、为什么动态效果是小程序的关键竞争力&#xff1f; 用户留存提升&#xff1a;数据显示&#xff0c;86.3%的微商从业者依赖微信小程序&#xff0c;而动态效果能显著降低跳出率。技术赋能体验&#…

【机器学习】SAE(Sparse Autoencoders)稀疏自编码器

SAE(Sparse Autoencoders)稀疏自编码器 0.引言 大模型一直被视为一个“黑箱”&#xff0c;研究人员对其内部神经元如何相互作用以实现功能的机制尚不清楚。因此研究机理可解释性&#xff08;Mechanistic Interpretability&#xff09;就成为了一个热门研究方向。大模型的复杂…

抖音授权登录-获取用户授权调用凭证

实现微信小程序获取抖音授权,使用Java实现抖音授权登录,您需要使用抖音开放平台提供的API 第一步 :抖音获取授权码 前提条件 •需要去官网为应用申请 scope 的使用权限。•需要在本接口的 scope 传参中填上需要用户授权的 scope,多个 scope 以逗号分割。•用户授权通过后…

普通人怎样用好Deepseek?

今年4月份左右&#xff08;2025年&#xff09;&#xff0c;我在上班路上开车&#xff0c;一边听着「黑客与画家」的播客&#xff0c;一边想着字节的Trae为啥能够远程编程&#xff0c;而我的poclogsender[1] [2]却只能在本地打日志&#xff0c;3天之后&#xff0c;借助deepseek我…

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…

织梦dedecms {dede:sql} LIKE模糊查询问题 多出‘号

我们在用到dede:sql这个标签时候&#xff0c;查询语句中 LIKE %~title~%&#xff0c;~title~这个like后会出现单引号&#xff0c;造成查询出错或者没有结果&#xff0c;下面就需要修改一下sql.lib.php这个文件&#xff0c;我们需要把自动为语句添加单引号去掉。 找到/include/…

Cursor-1.0安装Jupyter-Notebook,可视化运行.ipynb文件中Python分片代码

Cursor 1.0是AI代码编辑器的里程碑的最新版本。 Cursor - AI 代码编辑器 Cursor - The AI Code Editor 下载 Cursor 我使用的Cursor版本信息 Version: 1.0.0 (Universal) VSCode Version: 1.96.2 Commit: 53b99ce608cba35127ae3a050c1738a959750860 Date: 2025-06-04T19:21:39.…

SQL进阶之旅 Day 28:跨库操作与ETL技术

【SQL进阶之旅 Day 28】跨库操作与ETL技术 文章简述 在现代数据驱动的业务场景中&#xff0c;数据往往分布在多个数据库系统中&#xff0c;如MySQL、PostgreSQL、Oracle等。如何高效地进行跨库操作和**数据集成&#xff08;ETL&#xff09;**成为数据工程师和数据库开发人员必…

Flutter之GetX框架的使用

文章目录 前言GetX使用建议状态管理GetX快速上手GetX基本功能介绍**核心作用****代码示例****关键细节****性能建议** 参考链接 前言 在Reddit上&#xff0c;诟病GetX的声音很多&#xff0c;主要是说它做的事情太多&#xff0c;不是单一功能组件&#xff0c;违反单一职责原则。…

Kettle数据抽取(二)

一、脚本运用 从本地ORACLE11 数据库 抽取数据到 华为MYSQL8.1 数据库 抽取前先删除MYSQL8.1 数据库中emp_dept_salgrade表原有数据,避免重复 二、插入表更新 事实上前面一种方法不是增量处理,因为是全部删除合部重新写入相当于初始化一样,这种情形,如果数据量较大,如有1…

一套高质量的博客平台、社交应用UI

这是一套移动端UI设计素材包含14个高质量PSD文件&#xff0c;涵盖博客社交类APP的核心页面&#xff0c;包括登录界面、动态展示、文章详情、聊天会话等常用场景。所有素材均为可编辑PSD格式&#xff0c;支持快速二次开发&#xff0c;适用于移动网站和APP项目。资源提供完整的UI…

麒麟信安支撑2025年电力监控系统安全运维新技能推广应用示范培训班顺利举办

近日&#xff0c;由国调中心主办、国网技术学院电网运行培训部承办的“2025年电力监控系统安全运维新技能推广应用示范培训班&#xff08;第一期&#xff09;”顺利举办。电网运行培训部高度重视本次培训组织工作&#xff0c;在国调中心的指导下&#xff0c;精心编制培训方案&a…

支付系统架构图

简明产品架构图 1. 商户门户 商户通过该门户管理与支付平台的所有互动&#xff0c;包括&#xff1a; 登录&#xff1a;商户进入系统&#xff0c;进行身份验证。 入驻&#xff1a;新商户注册并加入平台&#xff0c;开始使用支付服务。 订单管理&#xff1a;商户可以管理自己…

企业如何一键复制 DolphinScheduler 项目到新项目服务器?全套自动化方案来了!(企业不外传的实用工具)

在企业生产实践中,常见的一种场景是:一个大数据调度项目需要为多个客户分别部署在不同服务器上,而每个客户的任务逻辑、工作流结构、资源文件基本相同。这种情况下,如果每次都手动创建 DolphinScheduler 项目、上传资源文件、配置流程和参数,不仅浪费大量时间,还极容易出…

Oracle中10个索引优化

Oracle数据库作为一个功能强大的企业级数据库系统&#xff0c;对于索引的优化有着丰富的技巧和方法。理解和运用这些技巧可以显著提高数据库性能。 示例代码&#xff1a; – 假设我们有一个员工表 CREATE TABLE employees ( emp_id NUMBER PRIMARY KEY, name VARCHAR2(100), de…

【cv学习笔记】YOLO系列笔记

写在前面&#xff1a;本文主要介绍YOLO系列的整体框架&#xff0c;以及改进点的介绍。前面有型号的类型是经典&#xff0c;常被应用&#xff0c;YOLOv5&#xff0c;YOLOv8&#xff0c;和YOLOv11是ultralytics公司作品 *YOLOv5 Ultralytics YOLOv5 -Ultralytics YOLO 文档 YOL…

Ubuntu下搭建Black Magic Probe (BMP) 编译环境

版本和环境信息如下&#xff1a; PC平台&#xff1a; Windows 11 专业版 虚拟机运行平台&#xff1a;Oracle VM VirtualBox 7.1.6 Linux虚拟机&#xff1a; Ubuntu24.04 Debug调试器&#xff1a; BlackMagicProbe(BMP) 开源调试器&#xff1a;WeAct STM32F103CBT6 BluePill 核心…

Spring Cloud Gateway 动态路由实现方案

动态路由的核心需求&#xff1a;在不重启网关的情况下&#xff0c;实时修改路由规则。以下是 4 种实现方案&#xff1a; 方案 1&#xff1a;基于内存的动态路由&#xff08;RefreshRoutesEvent&#xff09; 适用场景&#xff1a;临时修改&#xff0c;重启失效 Autowired pri…

Flutter 路由守卫全面解析:从原理到实践

路由守卫是现代移动应用开发中不可或缺的重要机制&#xff0c;它如同应用的"安检系统"&#xff0c;在页面跳转前进行必要的检查和拦截。本文将深入探讨 Flutter 中路由守卫的实现原理、多种实现方案以及实际应用场景&#xff0c;帮助开发者构建更安全、更可靠的 Flut…