首页 > 其他分享 >leetcode313. 超级丑数

leetcode313. 超级丑数

时间:2024-10-08 10:50:27浏览次数:9  
标签:丑数 leetcode313 res 超级 数组 primes 质数

超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。

给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。

题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。

示例 1:

输入:n = 12, primes = [2,7,13,19]
输出:32 
解释:给定长度为 4 的质数数组 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。

示例 2:

输入:n = 1, primes = [2,3,5]
输出:1
解释:1 不含质因数,因此它的所有质因数都在质数数组 primes = [2,3,5] 中。
 

提示:

  • 1 <= n <= 105
  • 1 <= primes.length <= 100
  • 2 <= primes[i] <= 1000
  • 题目数据 保证 primes[i] 是一个质数
  • primes 中的所有值都 互不相同 ,且按 递增顺序 排列
/**
 * @param {number} n
 * @param {number[]} primes
 * @return {number}
 */
//  res :存储当前的超级丑数,结果数组
//  pointers:记录当前所有素因子对应的各个指针,有几个素因子就对应的有几个指针,指向结果数组res的下标,初始都指向下标1(废弃res[0])
//  nums:记录 指针指向res的超级丑数 乘以 对应的素因子的乘积,(用重复的丑数,没有去重)
//  取nums里面的最小丑数,作为当前元素存放在res里面,看看当前元素是由哪个素因子乘积得来,对应的 pointers指针往前移动
var nthSuperUglyNumber = function(n, primes) {
    let res = new Array(n + 1).fill(1),pointers = new Array(primes.length).fill(1),nums = [];
    // 外层遍历填充res数组
    for(let i = 2;i <= n; i++){
        // 内层循环1:计算当前指针对应的丑数 * 当前指针指向的素因子
        for(let j = 0; j < primes.length;j++){
            nums[j] = res[pointers[j]] * primes[j]; 
        }
        res[i] = Math.min(...nums);
        // 内层循环2:找到res[i]对应指针,指针移动
        for(let k = 0; k < nums.length;k++){
            if(nums[k] == res[i]) pointers[k]++;
        }
        nums = [];
    }
    return res[n];
};


标签:丑数,leetcode313,res,超级,数组,primes,质数
From: https://blog.csdn.net/Turboyiyi/article/details/142753965

相关文章

  • Centos7.9环境下安装Oracle12c 12.1.0【超级详细】
    目录1、软件包下载2、关闭防火墙3、安装依赖包4、创建用户和组 5、修改内核限制参数 6、手动配置内核参数7、修改login配置文件8、修改profile文件9、配置环境变量10、设置DISPLAY变量11、将系统换成英文 12、解压、授权13、安装数据库13.1、安装软件13.2、......
  • SpringBoot常用注解(超级详细,快快收藏)
    目录(1)@SpringBootApplication(2)@RestController(3)@RequestMapping(4)@GetMapping(5)@PostMapping(6)@PutMapping(7)@DeleteMapping(8)@RequestParam(9)@PathVariable(10)@RequestBody(11)@ResponseBody(12)@Autowired(13)@Component(14)@Service(15)@Reposit......
  • 布加迪革新之作:新款陀飞轮超级跑车,融合未来感与激进感
    【2024年9月28日】&nbsp;——来自法国的世界顶级超跑品牌布加迪(Bugatti)昨日再次点燃了全球车迷的热情,通过一段神秘预告片首次曝光了新款陀飞轮(Tourbillon)的激进设计理念,引发了广泛热议。这款被誉为“速度艺术品”的超级跑车,预计将于2026年开始限量发售,计划全球仅限250辆,每一辆......
  • 当超级管理员因错误而不允许用户登录时会发生什么
    想象一下,您是网络应用程序的用户,兴奋地导航到登录页面以访问您的帐户,然后输入凭据,单击闪亮的“登录”按钮,然后满怀期待地等待。但可惜的是,您的个性化仪表板并没有迎接您,而是出现了一条不祥的错误消息:“抱歉,由于系统错误,站点管理员已暂时禁用用户登录。”当您感到沮丧时,您可能想知......
  • 从“可用”到“好用”,百度智能云如何做大模型的“超级工厂”?
    如果说,过去两三年大模型处于造锤子阶段,那么今年,更多的则是考验钉钉子的能力,面对各类业务场景大模型是否能够有的放矢、一击必中,为千行百业深度赋能。当前市场上,已经有200多把这样的锤子在疯狂找钉子。但从实际应用来看,大模型在文生文、文生图以及扮演初级的工作助理等方面还算合格,......
  • 《超级机器人大战30》缺少roboex32.dll启动遇阻怎么办?轻松应对《超级机器人大战30》ro
    当《超级机器人大战30》因缺少roboex32.dll文件而启动遇阻时,可以尝试以下几种解决方案来轻松应对这一问题:一、下载并替换缺失的DLL文件寻找可靠来源:首先,需要在互联网上找到可靠的roboex32.dll文件下载源。建议访问官方网站、微软官方下载中心或知名的软件下载站点,以确保下载......
  • 为什么说AI产业落地,下一代超级应用是“智能体”?
    “未来超级应用方向就是AIAgent,ChatGPT很了不起、很强大,但与Agent不一样。AIAgent时代的到来,不会是一个神奇而强大的模型突然代替了所有的工作流,涉及到技术、工程与市场的不断磨合,最终以超预期的服务呈现给人类。”——香港科技大学校董会主席、美国国家工程院外籍院士沈向洋在AI......
  • 超级无敌缝合怪梦熊
    给出一棵树,同时存在一张\(n\)个点的无向完全图,其中边权为树上两点距离,求所有点对之间最小瓶颈路上最大边权之和。这是梦熊第七场noip模拟赛的t1题面,如果你想要做出t1,你只需要一个结论和见过足够的题。结论:两点之间最小瓶颈路最大边权就是两点在最大生成树上简单路径的......
  • 《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端评测》
    前言科技发展到如今2024年,可以说每一年都在发生翻天覆地的变化。而云上这个词时常都被大家提起,从个人设备连接到云端在如今在也不是梦了。而云电脑这个市场近年来迅速发展,无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验,并且移动端也可以带来非凡体验。我们......
  • 《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端评测》
    前言科技发展到如今2024年,可以说每一年都在发生翻天覆地的变化。而云上这个词时常都被大家提起,从个人设备连接到云端在如今在也不是梦了。而云电脑这个市场近年来迅速发展,无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验,并且移动端也可以带来非凡体验。我们在外出办......