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

丑数-优先队列/三指针/动态规划

丑数

在这里插入图片描述

Solution

核心思路:
在这里插入图片描述

注意的几个点:
1.优先队列改变排序:

priority_queue<int,vector<int>,greater<int>> q;

2.用来判断是否访问过,可以用unordered_set
注意set的插入用的是insert而不是push

unordered_set<long long> vis;
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>//使用优先队列priority_queue导入queue就行了
#include<unordered_map>
#include<unordered_set>
using namespace std;//优先队列写法
int nthUglyNumber1(int n) {priority_queue<long long,vector<long long>,greater<long long>> q;//unordered_map<long long, long long> vis;unordered_set<long long> vis;q.push(1);long long x;for (int i = 1; i <= n; ++i) {x = q.top();q.pop();long long x2 = x * 2;long long x3 = x * 3;long long x5 = x * 5;if (!vis.count(x2)) { q.push(x2); vis.insert(x2); }if (!vis.count(x3)) { q.push(x3); vis.insert(x3); }if (!vis.count(x5)) { q.push(x5); vis.insert(x5); }}return x;
}//动态规划+三指针写法
//题目的本质目的,是从前面得到的数中,每个数乘2,3,5,然后求从小到大的第n个数
//由于需要从小到大,可以使用三个指针依次指向当前乘以2,3,5的数,选取其中最小的为丑数,并将指针向后移动一个
int nthUglyNumber2(int n) {int p2 = 1, p3 = 1, p5 = 1;vector<long long> dp(n + 1, 1);for (int i = 2; i <= n; ++i) {long long x2 = dp[p2] * 2;long long x3 = dp[p3] * 3;long long x5 = dp[p5] * 5;long long ugly = min(min(x2, x3), x5);if (ugly == x2) p2++;if (ugly == x3) p3++;if (ugly == x5) p5++;dp[i] = ugly;}return dp[n];
}
int main() {return 0;
}
http://www.dtcms.com/a/312088.html

相关文章:

  • Linux 动静态库的制作和使用
  • 深度剖析PyTorch torch.compile的性能曲线与优化临界点
  • SpringBoot 01 IOC
  • PyTorch 张量核心操作——比较、排序与数据校验
  • java实现运行SQL脚本完成数据迁移
  • 通俗易懂解释Java8 HashMap
  • Rust进阶-part1-智能指针概述-box指针
  • 【多模态】DPO学习笔记
  • 嵌入式文件系统
  • Java中Lambda 表达式的解释
  • PCB铜浆塞孔工艺流程
  • 如何快速解决PDF解密新方法?
  • 使用C++实现日志(1)
  • 疏老师-python训练营-Day33 MLP神经网络的训练
  • AbstractExecutorService:Java并发核心模板解析
  • 深入 Go 底层原理(一):Slice 的实现剖析
  • 二叉树链式结构的实现
  • lesson31:Python异常处理完全指南:从基础到高级实践
  • 乌鸫科技前端二面
  • Go语言中的闭包详解
  • OpenCV学习 day3
  • stm32是如何实现电源控制的?
  • 如何防止内存攻击(Buffer Overflow, ROP)
  • 髋臼方向的定义与测量-I
  • u-boot启动过程(NXP6ULL)
  • android studio 安装Flutter
  • WD5208S,12V500MA,应用于小家电电源工业控制领域
  • Kubernetes 构建高可用、高性能 Redis 集群实战指南
  • #C语言——学习攻略:探索字符函数和字符串函数(一)--字符分类函数,字符转换函数,strlen,strcpy,strcat函数的使用和模拟实现
  • 数据库理论