把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

public class Solution {
    public int GetUglyNumber_Solution(int index) {
        if(index<=0){
            return 0;
        }

        int[] p = new int[index];
        p[0]=1;
        int p2=0;
        int p3=0;
        int p5=0;
        int num=1;//索引
        while (num < index){
            int min = Min(p[p2]*2,p[p3]*3,p[p5]*5);
            p[num] = min;
            while(p[p2]*2<=p[num]){
                p2++;
            }
            while(p[p3]*3<=p[num]){
                p3++;
            }
            while(p[p5]*5<=p[num]){
                p5++;
            }
            num++;
        }
        int res = p[num-1];
        return res;
    }

    private static int Min(int i, int j, int k) {
        int min = i<j ? i : j;
        min = min < k ? min : k;
        return min;

    }
}

原文地址:https://www.cnblogs.com/q-1993/p/10878137.html

时间: 2024-10-05 22:19:02

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。的相关文章

c语言:把只含因子2、3和5的数称为丑数,求按从小到大的顺序的第1500个丑数(两种方法比较)

把只含因子2.3和5的数称为丑数,求按从小到大的顺序的第1500个丑数.例如6.8都是丑数,但14不是,因为它包含因子7.习惯上把1当作第1个丑数. 算法1:逐个判断每个整数是不是丑数的解法,直观但不够高效 #include<stdio.h> int ugly(int number) { while (number % 2 == 0) { number /= 2; } while (number % 3 == 0) { number /= 3; } while (number % 5 == 0

这些基础知识你都了解吗?——《松本行弘的程序世界》读书笔记(上)

1. 前言 半个月之前买了这本书,还是经园子里的一位网友推荐的.到现在看了一半多,基础的都看完了,剩下的几章可做高级部分来看.这本书看到现在,可以说感触很深,必须做一次读书笔记! 关于这本书,不了解的可以去网上查查.作者是Ruby语言的创始人,可谓是程序世界中的高手,开卷有益,不管你是哪个层次的编程人员,相信都能或多或少的汲取到你想要的营养. 下面将总结一下看完本书我记录下的一些知识点.有的是书中的原话,有的是我个人的理解,供参考. 2. 面向对象 2.1 多态性 面向对象三大原则:继承.封装和

发生线上故障后问责是不是第一要务

<Google SRE>这本书,说过这样一句话:系统正常,只是该系统无数异常情况下的一种特例.故障是不可避免的,不管是再牛的系统.再知名的科技公司. 既然不可避免,我们要做的就是不断提升能力和优化流程,减少故障出现的概率. 今天公司线上系统出现了响应迟钝的情况,白天偶现,到了晚上,出现雪崩效应.各个系统,都出现相应超时等情况.最终定位到有一个太服务器的CPU跑满了. 其实监控系统已经出现报警提醒,但因未有一套规范流程.没有第一时间观察到.出现线上有问题,第一时间应该查看监控系统是否有异常情况,

云计算之路-阿里云上:消灭“黑色n秒”第一招——不让CPU空闲

昨天对"黑色n秒"问题的最终猜想以失败而告终,从而让我们结束了被动猜想阶段,进入了主动进攻阶段--出招. 今天出第一招--用C#写个小程序,让其在每个CPU核上运行一个线程,不让任何一个CPU核进入空闲(idle)状态,以进一步排除CPU idle引起的"黑色n秒". 在这一招中,借助的最重要的武器是System.Diagnostics.ProcessThread.ProcessorAffinity.通过给ProcessorAffinity设置一个掩码,就可以指定当

把 14 亿中国人都拉到一个微信群在技术上能实现吗?

阅读本文大概需要 2.8 分钟. 作者:Max  来源:腾讯知乎官号 www.zhihu.com/question/293021546/answer/487157602 "最近,知乎上有一个非常热门的问题:"把 14 亿中国人民都拉到一个微信群里在技术上能实现吗?" 先说结论:也许可以实现,但你会什么都看不见. 根据 2017 年<微信数据报告>的公开数据 [参考 1] :2017 年 9 月,微信日均登陆 9.02 亿人,日均发送消息 380 亿次. 这意味着平

使用innerHTML获取HTML代码时,HTML标记属性的双引号好多都消失不见了,原来是属性值中包含空格才会保留双引号

最近搞的一个项目中所使用的方式比较奇怪,用Label显示HTML内容,然后不断地使用JS把Label的innerHTML复制到TextBox中. 但是,昨天发现了一个问题,获取元素值的时候,有时候正常,有时候不正常,然后进入了漫长的DEBUG.. 调试过程中,监测Label和TextBox的值,发现获取到Label的值是未被改变的,控件加载的时候是怎样就怎样,在页面中是以SPAN元素显示,在查看网页源代码的时候可以看到被修改了,但是在后台无论怎么获取都是页面加载时赋予的未经修改之前的值. 而Te

android studio上的基本动画实现(第一篇)

hello,各位小伙伴们,在很多小伙伴们刚刚开始学习android的时候,常常会有一些project里面需要有一些基本动画的插入,那么具体是要怎么实现呢?我们接下一起分析一下在android中的几种基本动画. (这里我们默认是用个人觉得比eclipse更智能一些的Android Studio来实现.ps:方法是一样的,没有区别,喜欢常用eclipse的朋友们别见怪哦.) 在我们进行具体学习android动画前首先,我们要知道:在android中的动画一般是与事件的操作处理相关的,比如说通过触发某

scrollview上添加子视图,在第一个视图右滑显示时右滑调用某个方法

1.设置scrollview没有反弹效果 scrollview.bounces = NO; 2.在scrollview上添加很多控制器的view,在滑动到最左侧(第一个)view时,再右滑不在是反弹效果,而是调用某个方法时: 步骤1:重写scrollview类,在scrollview类里有个 -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 方法 例如 -(BOOL)gestureRecogn

踏上Web前端工程师道路的第一天。

今天是学习前端的第一天,在老师的指导下和自己的一些自学,愉快的结束了一天的C#课程. 在前辈传授的一些经验中,使我记忆深刻的便是我现在处在一个信息知识爆炸的时代,随时都有新的知识更新,让我们在这个社会上得以立足的,不在于我们掌握了多少知识,而是我们有多强的学习能力.在今天的课程中,一共学了八节.虽说是最基础的知识,不过消化完成还是花费了自己不少的时间才完全记住,这让我产生了一种是否是自己的学习方法不对. 先记录一下自己目前的学习方式,希望在日后能有所进步. 首先我是在课堂上仔细的理解老师所教授的