博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——面试题34:丑数
阅读量:4087 次
发布时间:2019-05-25

本文共 1430 字,大约阅读时间需要 4 分钟。

bool IsUgly(int number){    while(number % 2 == 0)        number /= 2;    while(number % 3 == 0)        number /= 3;    while(number % 5 == 0)        number /= 5;     return (number == 1) ? true : false;}

int GetUglyNumber_Solution1(int index){    if(index <= 0)        return 0;     int number = 0;    int uglyFound = 0;    while(uglyFound < index)    {        ++number;         if(IsUgly(number))        {            ++uglyFound;        }    }     return number;}

int GetUglyNumber_Solution2(int index){    if(index <= 0)        return 0;     int *pUglyNumbers = new int[index];    pUglyNumbers[0] = 1;    int nextUglyIndex = 1;     int *pMultiply2 = pUglyNumbers;    int *pMultiply3 = pUglyNumbers;    int *pMultiply5 = pUglyNumbers;     while(nextUglyIndex < index)    {        int min = Min(*pMultiply2 * 2, *pMultiply3 * 3, *pMultiply5 * 5);        pUglyNumbers[nextUglyIndex] = min;         while(*pMultiply2 * 2 <= pUglyNumbers[nextUglyIndex])            ++pMultiply2;        while(*pMultiply3 * 3 <= pUglyNumbers[nextUglyIndex])            ++pMultiply3;        while(*pMultiply5 * 5 <= pUglyNumbers[nextUglyIndex])            ++pMultiply5;         ++nextUglyIndex;    }     int ugly = pUglyNumbers[nextUglyIndex - 1];    delete[] pUglyNumbers;    return ugly;} int Min(int number1, int number2, int number3){    int min = (number1 < number2) ? number1 : number2;    min = (min < number3) ? min : number3;     return min;}

你可能感兴趣的文章
on duplicate key update语句和insert ignore into语句
查看>>
Kafka使用场景
查看>>
Kafka学习笔记
查看>>
使用kafka传递大文件时的配置
查看>>
Kafka核心知识点
查看>>
一次性替换字符串中的多个字符
查看>>
postgresql笔记
查看>>
AndroidStudio向量图修改插件(VectorPathTweaker)
查看>>
合并 Ijkplayer 和 ffmpeg-metadata-retriever
查看>>
Blender v2.79b 的编译与使用
查看>>
Java Annotation 修改 Field 变量的初始化语句。
查看>>
百度新闻同款左右切换按钮,悬浮变形
查看>>
真正解决 Android-29 无法查看系统源码的问题 (终极方案)
查看>>
安卓webview打印PDF、离线页面的标准做法
查看>>
Sortablejs + css 模仿安卓桌面,实现可拖拽排序的主页图标+文件夹收纳
查看>>
又一 Java 注解(annotation)用例
查看>>
FFmpeg+Python打造命令行工具箱
查看>>
NotePad++使用、魔改笔记
查看>>
仿Via浏览器在长按位置显示置功能菜单栏
查看>>
如何让安卓的进度条在被触摸后立即开始调整数值?
查看>>