zoukankan      html  css  js  c++  java
  • 面试题34:丑数

    题目描述

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

    题目分析

    剑指Offer(纪念版)P182

    代码实现

    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;
    }
    

      

  • 相关阅读:
    ssd的BUG
    ImportError: No module named lmdb
    GPU卡掉卡
    mobileeye
    caffe convert mxnet
    学前书单-百科
    捉襟见肘
    caffe+opencv3.3.1
    ipython notebook开通远程
    到底什么是故事点(Story Point)?
  • 原文地址:https://www.cnblogs.com/xwz0528/p/4864416.html
Copyright © 2011-2022 走看看