class Solution {
public:
  int GetUglyNumber_Solution(int index) {

//变量定义区

    int subA=0, subB=0, subC=0;
    int sub =0;
    int* array = new int[index];
    array[0] = 1;

    if(index <= 0)
      return 0;

//分析:数组的后面的每一个元素必定是由数组前面的某一个乘以2,3,或者5得到

//  也就是说, 每个当前的值,都是由前面的某个值的2倍,3倍,5倍 贡献的。

//  至于具体由哪个贡献,需要选择最小的值。

// 这样,可以维护四个下标变量,一个记录数组当前下标值,另外三个分别记录2,3,5的下标值

//每次选取当前值中的2,3,5的倍数中的最小值, 然后需要判断这三个值 是不是大于 当前值,

//如果不大于,那么需要更新这三个值得下标,也就是向前移位,直到大于当前值。
    while(sub < index-1)
    {
      //当2的倍数低于(等于)当前值,需要前移
      while( array[subA]*2 <= array[sub])
        ++subA;
                 //
      while( array[subB]*3 <= array[sub])
        ++subB;

      while( array[subC]*5 <= array[sub])
        ++subC;

    

      //需要取最小的值作为当前值
      array[++sub] = min( array[subA]*2, array[subB]*3, array[subC]*5);

    }

    int result = array[index-1];
    delete [] array;

    return result;
  }

  int min(int n1,int n2,int n3)
  {
    int minimum=0;
    minimum = (n1 < n2) ? n1:n2;
    minimum = (minimum < n3) ? minimum:n3;

    return minimum;
  }

};

转载于:https://www.cnblogs.com/shewell/p/6492480.html

剑指offer 66题 -- 丑数相关推荐

  1. 剑指Offer 66题 python版本 汇总

    牛客网剑指offer 66题汇总 (python) 有部分参考牛客网答案,部分为自己提交结果 1. 二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每 ...

  2. 【剑指offer 33】丑数

    题目描述: 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. py ...

  3. 剑指offer(三十三)-丑数(Java版)

    描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 示例1 输 ...

  4. 剑指offer 66题 -- 删除链表中重复的节点

    /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ ...

  5. 【LeetCode 剑指offer刷题】特殊数题3:204 Count Primes

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 204. Count Primes Count the number of prime numbers less t ...

  6. C++剑指offer刷题笔记

    说明:本文是本人刷题后整理的剑指offer1-68题的题解笔记,编程语言为c++. 主要参考刷题笔记网址:leetcode剑指offer 次要参考刷题笔记网址:牛客剑指offer 剑指OFFER 面试 ...

  7. 剑指offer(60-67题)详解

    文章目录 60 把二叉树打印成多行 61 序列化二叉树 62 二叉搜索树第K个节点 63 数据流中的中位数 64 滑动窗口的最大值 65 矩阵中的路径 66 机器人的运动范围 67 剪绳子 欢迎关注个 ...

  8. 剑指offer(26-33题)详解

    文章目录 26 二叉搜索树与双向链表 27 字符串的排列 28 数字中出现次数超过一半的数字(待优化)★ 29 最小的K个数 30 连续子数组最大和 31 整数中1出现的次数 32 把数组排成最小的数 ...

  9. 剑指offer刷题1-66题-Python3

    文章目录 [剑指offer-Python3]1 判断数组中是否含有某整数. [剑指offer-Python3]2 替换字符串中的空格 [剑指offer-Python3]3 链表反转 [剑指offer- ...

  10. 【剑指Offer】剑指Offer刷题笔记

    数组和字符串 剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个 ...

最新文章

  1. java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...
  2. [蓝桥杯][2019年第十届真题c/c++B组]完全二叉树的权值
  3. es6 next()、throw()、return() 的共同点
  4. js技巧笔记(不断更新)
  5. 吴恩达深度学习神经网络基础编程作业Planar data classification with one hidden layer
  6. 清华源加速 添加在pip install xxx后面即可
  7. QT自定义QmessageBox对话框
  8. 淘淘商城第17讲——引用Dubbo服务
  9. 数独游戏,随机生成只有唯一解的数独表
  10. STFT原理及MATLAB代码
  11. ed是什么梗_美国大学EA,ED什么意思?
  12. 抖音带货赚钱吗?有哪些技巧?
  13. EBS中应用,职责,数据组,请求组等关系
  14. 数据科学家为什么还要学藏语?这不科学。首份藏文数字数据集出炉
  15. python获取工作日_Python的上一个工作日
  16. 爬虫-使用代理ip,使用session
  17. Integer i1 = 10;和Integer = new Integer(10);的区别
  18. python猫狗大战游戏下载_带你少走弯路:强烈推荐的TensorFlow快速入门资料和翻译(可下载)...
  19. android studio读取本地json,Android Studio读取和创建Json
  20. 用EXCEL计算距平数据

热门文章

  1. Atitit 输入法原理与概论ati use
  2. Atitit MATLAB 图像处理 经典书籍attilax总结
  3. paip.python错误解决20
  4. paip. c++ doxygen 文档工具的使用以及跟QT CREATOR的集成
  5. PAip.英文翻译引擎在项目开发上的作用
  6. rust: linker-link-exe-not-found
  7. 让刺猬和狐狸结婚:资本巨鳄BlackRock的金融科技野心
  8. 洞见 | Peter:Web3.0 的宏观架构
  9. (转)Matlab映射表数据结构(containers.Map)
  10. 第六届开源操作系统年度技术会议将在12月16日杭州浙江大学举办