lintcode设计一个算法,找出只含素因子2,3,5 的第 n 小的数

找出第n个丑数 指定一个下标(第n个),输出第n个丑数。例如n=10,返回的结果是1,2,3,4,5,6,8,9,10,12数列中的12 立即下载

丑数为值只包含因子 2、 3、 5 的数,14不是丑数因为包含因子7.

/*int min(int a,int b){
        if(a>b){
            return b;
        }else{
            return a;
        }
    }*/C++中存在min函数,可以直接使用
    int nthUglyNumber(int n) {
        int num[n+1];
         int p2,p3,p5;
         p2=p3=p5=0;
         num[0]=1;

        for(int i=1;i<n;i++)
        {
            num[i]=min(min(num[p2]*2,num[p3]*3),min(num[p2]*2,num[p5]*5));
            if(num[i]==num[p2]*2)
                ++p2;
            if(num[i]==num[p3]*3)
                ++p3;
            if(num[i]==num[p5]*5)
                ++p5;
        }
        return num[n-1];
    }

当前丑数必定是之前某个丑数 k 的 2倍、3倍、或者 5倍。
设定一个整型数组num[]存放丑数,当前丑数为2num[p2],3num[p3],5num[p5]中的最小值,其中p2,p3,p5之前第p2,p3,p5个丑数,p2,p3,p5初值均为0。
2.
设数组第一个数值num[0]=1,分别用2,3,5乘1寻找第二个丑数,得到最小值2作为第二个丑数即num[1]=2。
2
num[p2]=2num[0]=21=2
3num[p3]=3num[0]=31=3
5
num[p5]=5num[0]=51=5
因为第二个丑数是2与上一个丑数相乘得到的,因此在下一次寻找丑数时不需要再计算2与对应相乘的上一个丑数num[p2]相乘,因为下一个丑数一定大于num[1]即2num[0]。所以在下一次计算丑数时,直接从nun[1]开始乘以2,即p2进一位。
3.
分别用2
num[p2],3num[p3],5num[p5]判断第三个丑数,p2=1,p3=p5=0.
2num[p2]=2num[1]=22=4
3
num[p3]=3num[0]=31=3
5num[p5]=5num[0]=51=5
得到最小值3作为第三个丑数,因此在下一次寻找丑数时不需要再计算3与对应相乘的上一个丑数num[0]相乘,因为下一个丑数一定大于3
num[0]即num[2]。所以在下一次计算丑数时,直接从num[1]乘以3,即下表p3进一位。
4.以此类推找到第n个最小值为第n个丑数。

求第1500个只有2,3,5因子的数 求第1500个只有2,3,5因子的数。数是从小到大排列,第一个数是1,1=2^0*3^0*5^0。 要求用C/C++实现。时间复杂度不超过O( )。 立即下载

相关推荐

程序员面试金典-卷二

本书是原谷歌资深面试官的经验之作,层层紧扣程序员面试的每一个环节,全面而详尽地介绍了程序员应当如何应对面试,才能在面试中脱颖而出。第1~7 章主要涉及面试流程解析、面试官的幕后决策及可能提出的问题、面试前的准备工作、对面试结果的处理等内容;第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。 本书适合程序开发和设计人员阅读。 150个编程题问答从二叉树到二分查找,该部分涵盖了关于数据结构和算法的最常见、最有用的面试题以及最为精巧的解决方案。应对棘手算法题的5种行之有效的方法通过这5种方法,你可以学会如何处理并攻克算法难题,包括那些最棘手的算法题。面试者最容易犯的10个错误不要因为这些常见的错误而与成功失之交臂。要了解面试者常犯的一些错误,学会如何避免这些问题。面试准备的若干策略不要因为沉溺在无穷无尽的面试题中而错过了最重要的求职建议。这些策略和步骤可以让你更有效地准备面试。

LintCode 2: Ugly Number II ——只含素因子2,3,5 的第 n 小的数。

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.youkuaiyun.com/qq_38148754 本人水平有限,同在学习,如若发现问题还请及时批评指正。 问题描述: 找出只含有素因子2,3,5的第n小的数(丑数),认为1也是丑数: 预备知识:最小堆 相信大家都了解最小堆的概念,熟悉堆排序的朋友也一定更容易理解这种数据结构。我在这里简单叙述一下。最小堆...

qq_38148754的博客 1059

单目标跟踪算法及其复现过程---SiamFC(一)

在test.py文件中,就是利用训练出来的模型进行测试,需要更改预训练模型的路径,测试集的路径,以OTB100为例,最后输出的是对每一帧目标位置的坐标点。代码如下:首先需要下载got10k官方库,只需要在终端输入(注意:在终端安装各种库的时候不能使用网络代理),在环境已经配置到的情况下,只需要该其中的路径和就可以运行。这个系列博客仅为了记录各目标跟踪算法的复现(大多为跑通大佬们实现的代码),包括其中出现的很多问题和错误,学到的新知识等等。解决,而且只使用在线的方法,限制了他们可以学习的模型的丰富性。

weixin_58244117的博客 4762

有些数的素因子只有3,5,7.请设计一个算法,找出其中第k个数

public static int removeMin(Queue q) { int min=q.peek(); for(Integer v:q) { if(min>v) min=v; } while(q.contains(min)) { q.remove(min); } return min; } public static void  addProducts(Que

雪儿的专栏 1万+

ArduPilot 的 RTOS 选择:为何 ChibiOS 成为现代飞控的首选

本文深入探讨了ArduPilot选择ChibiOS作为现代飞控首选RTOS的原因。通过对比FreeRTOS和NuttX,ChibiOS凭借其50ns中断响应、1.2μs上下文切换时间和高效的资源管理脱颖而出,特别适合处理无人机飞控中的高频传感器融合和实时控制任务。文章还详细分析了ChibiOS在STM32硬件上的优化实践及其在无人机开发中的显著优势。

weixin_29161719的博客 570

用R语言实现“中断时间序列分析” --- R code for ITS

ITS方法可用于评估一项干预措施的效果,从水平改变和斜率改变两个角度来描述干预引起的变化。

franksui的博客 4027

【0004】找出只含素因子2,3,5 的第 n 小的数(丑数算法)

问题描述: 在时间复杂度为 O(nlogn) 或者 O(n)的情况下实现找出只含素因子2,3,5 的第 n 小的数 重点: 丑数的逻辑 主要考点: 如何判断数字是否为丑数 算法逻辑: 丑数的概念:只含有素因子2,3,5的数字被称之为丑数,且习惯上我们把1当作第一个丑数 满足时间复杂度O(n),意味我们要获取的丑数是一个有限集合,即获取第n小等同于数组集合上限为n 根据丑数规则可知,第一个丑数值为...

Machen. 1016

Linux基础——“C语言高级编程” C语言中的细节你真的知道吗?

文章目录GCC简介 GCC简介 gcc 所支持后缀名解释 .c c原始程序 .C / .cc /.cxx C++原始程

weixin_44278698的博客 2511

<LeetCode> 题4:丑数

题目描述:设计一个算法,找出只含素因子2,3,5 的第 n 大的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12… 注意:1也是丑数 例如:输入9,则输出10思路一:暴力解法从1开始依次向后判断各自然数是否为丑数,一直判断到第n个丑数,返回第n个丑数的值。 第一步:先判断每一个数m是否为丑数:可以试着用2、3、5不断整除m,当m不能再被2、3、5整除时,判断

浅语 1951

自动驾驶关键技术(一):时间敏感网络TSN

时间敏感网络TSN的基本概念、协议族介绍和开发流程。

3080

基于cat12搞定SBM的ROI的统计分析——vertex水平和ROI水平的双样本T检验

前言 一、Atlas皮层图谱介绍 二、SBM分析——主要以皮层四种常用指标中的厚度(thickness)和沟深(depth)为主

Sophia2023的博客 8752

LIntCode[中等]丑数设计一个算法,找出只含素因子2,3,5 的第 n 小的数

LintCode[中等]设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 分析 根据题目可得,丑数即由若干个2、3、5相乘所的到的数。可以写成2^a+ 3 ^b + 5 ^ c a,b,c可以取随意自然数 再进一步分析,可以得到每个丑数都存在另一个丑数乘以2、3、5中的一个数,与之相等。 题目要求要第n个小的丑数。 思路: 使用lis保存丑数,l2,l3,l5用来记录位置 获取2l2,3l3,5*l5的值,获取最小的值与之比较,相等表示当前位置下标+1 例: public static int

qq_38075852的博客 498

【SpringBoot笔记44】SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置)

在SpringBoot应用开发中,一般情况下,都是只会配置一个数据源信息,之后整个工程都是对当前数据源进行增删改查的操作。但是,在实际开发里面,也有可能会遇到多数据源的情况,例如:当前工程中除了需要访问自己应用的数据库,还需要直接连接第三方系统的数据库进行业务处理,这种情况下,就需要进行多数据源的配置。SpringBoot考虑到了这一点,所以它是支持多数据源的配置的,下面介绍一下如何配置多数据源。

✅ Java 开发工程师 1117

LintCode:丑数 II

设计一个算法,找出只含素因子2,3,5 的第 n 大的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12...  注意事项 我们可以认为1也是一个丑数 您在真实的面试中是否遇到过这个题?  Yes 样例 如果n = 9, 返回 10 class Solution { public:

zyf19930610的专栏 741

王炸联动!OpenClaw 对接微信 / 企业微信保姆级教程,AI 办公效率翻倍

《OpenClaw对接微信/企业微信全指南》摘要:本文提供开源AI智能体OpenClaw与微信生态的完整对接教程。核心内容包括企业微信配置四步法(获取凭证、修改配置、重启服务、验证对接)和个人微信通过企业微信插件的一键打通方案。对接后支持微信/企微发指令AI秒执行、群聊机器人、文件同步等高效办公场景,并附常见问题排查代码。教程强调配置简单(全程可复制代码)、适用广泛(个人/团队场景),实现沟通与AI协作的无缝衔接。文末包含端口放行等实用命令,助力用户快速实现移动端AI办公。(149字)

2501_93651177的博客 584

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

[LintCode]4.丑数 II

设计一个算法,找出只含素因子2,3,5 的第 n 大的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12.. 注意事项 我们可以认为1也是一个丑数 样例 如果n = 9, 返回 10 只包含因子2,3,5 的数称为丑数 。 思路:从第二个数开始,每一个数为第p2个数的二倍、第p3个数的三倍、第p5个数的五倍中最小的一

天蓝Ada的博客 459

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LintCode 4 丑数II

题目:nthUglyNumber要求:设计一个算法,找出只含素因子2,3,5 的第 n 大的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 注意事项 1.我们可以认为1也是一个丑数样例 如果n = 9, 返回 10算法要求:要求时间复杂度为O(nlogn)或者O(n)解题思路:仔细观察规律,从第二个数开始,每一个数为第p2个数的二倍、第p3个数的三倍

一名小学生的辛酸奋斗史 1192

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LintCode Java——丑数

设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12… 注意事项 我们可以认为1也是一个丑数 样例 如果n = 9, 返回 10 public int nthUglyNumber(int n) { // write your code here int[] ...

folute_的博客 774

领扣LintCode问题答案-4. 丑数 II

领扣LintCode问题答案-4. 丑数 II 目录4. 丑数 II鸣谢 4. 丑数 II 设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12… 我们可以认为 1 也是一个丑数。 样例 1: 输入:9 输出:10 样例 2: 输入:1 输出:1 public class Solution { /** * @param n: An integer * @return: return a.

二当家的白帽子 8265

LintCode 4. 丑数 II JavaScript算法

描述 设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12… 说明 我们可以认为 1 也是一个丑数。 样例 - 样例 1: 输入:9 输出:10 - 样例 2: 输入:1 输出:1 挑战 要求时间复杂度为 O(nlogn) 或者 O(n)。 解析 这里百度了一下什么叫丑数: 说法一(ugly number):把只包含质因子2,3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但7、14不是,因为它们包

smallteddy.blog.youkuaiyun.com 2592

lintcode练习-4. 丑数 II

https://www.lintcode.com/problem/ugly-number-ii/my-submissions 设计一个算法,找出只含素因子2,3,5的第n小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 样例 样例 1: 输入:9 输出:10 样例 2: 输入:1 输出:1 挑战 要求时间复杂度为 O(nl...

云中寻雾的博客 493

Lintcode算法题:丑数

题目描述: 设计一个算法,找出只含素因子2,3,5的第n小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 我们可以认为1也是一个丑数 样例 如果n = 9, 返回10 挑战 要求时间复杂度为O(nlogn)或者O(n) 解题: class Solution { ...

bakk0615的博客 200

lintcode - 丑数 II

题目描述:设计一个算法,找出只含素因子2,3,5 的第 n 大的数。符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12...我们可以认为1也是一个丑数 样例:如果n = 9, 返回 10 之前,做过一道类似的题目:丑数。题目的要求是判别一个整数是不是丑数。而本题的目的是计算第n个丑数是多少。所以,一种朴素的思路是这样:设定一个计数器,初始为0. 然后从

guoziqing506的博客 3012

LintCode 第四题 丑数2

问题描述 设计一个算法,找出只含素因子2,3,5 的第 n 小的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12… 如果n = 9, 返回 10丑数 介绍: 只包含因子2,3,5的正整数被称作丑数,比如4,10,12都是丑数,而7,23,111则不是丑数。 判断方法: 1. 首先除2,直到不能整除为止; 2. 然后除5到不能整除为止; 3. 然后

HuY的博客 713
上一篇: lintcode计算数字k在0到n中的出现的次数,k可能是0~9的一个值
下一篇: lintcode在数组中找到第k大的元素(快速排序)
有多少个小土豆
博客等级 码龄10年 235粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值