码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer-面试题49-丑数-空间换时间

时间:2019-12-17 22:22:47      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:name   int   剑指offer   numbers   vector   stream   序列   multi   时间   

/*
题目:
	求从1开始的第n个丑数。
*/
/*
思路:
	按顺序列出各个丑数。
*/
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map>


using namespace std;


int GetUglyNumber_Solution(int index) {
    if(index <= 0) return 0;
    int uglyNumbers[index];
    uglyNumbers[0] = 1;
    int *pMultiply2 = uglyNumbers;
    int *pMultiply3 = uglyNumbers;
    int *pMultiply5 = uglyNumbers;
    int next = 1;

    while(next < index){
        uglyNumbers[next++] = min(min((*pMultiply2)*2,(*pMultiply3)*3),(*pMultiply5)*5);

        while((*pMultiply2)*2 <= uglyNumbers[next-1]){
                pMultiply2++;
        }
        while((*pMultiply3)*3 <= uglyNumbers[next-1]){
                pMultiply3++;
        }
        while((*pMultiply5)*5 <= uglyNumbers[next-1]){
                pMultiply5++;
        }
    }
    return uglyNumbers[index-1];

}

int main(){
    cout<<GetUglyNumber_Solution(6);

    return 0;
}

   

剑指offer-面试题49-丑数-空间换时间

标签:name   int   剑指offer   numbers   vector   stream   序列   multi   时间   

原文地址:https://www.cnblogs.com/buaaZhhx/p/12056934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!