微软100题(64)寻找第1500个丑数
来源:互联网 发布:网络摄像机说明书 编辑:程序博客网 时间:2024/06/11 16:20
题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,
但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。
但是貌似很慢,实际上从1开始 每次乘以2 3 5,最小的是2,下次比较4 3 5 ,最小是3 下次比较4 6 5 以此类推
但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。
求按从小到大的顺序的第1500个丑数。
思路:
最直观的方法,逐一判断是不是丑数,知道找到1500个丑数
bool isUgly(int number){while (number%2==0)number = number/2;while (number%3==0)number = number/3;while (number%5==0)number = number/5;return (number==1)?true:false;}
但是貌似很慢,实际上从1开始 每次乘以2 3 5,最小的是2,下次比较4 3 5 ,最小是3 下次比较4 6 5 以此类推
每次找最小的
int GetUglyNum(int index){if(index<=0) return 0;int *uglynumber = new int[index];uglynumber[0] = 1;int nextuglyindex = 1;int *pMulitBy2 = uglynumber;int *pMulitBy3 = uglynumber;int *pMulitBy5 = uglynumber;while (nextuglyindex<index){int minnum = min(*pMulitBy2*2,min(*pMulitBy3*3,*pMulitBy5*5));uglynumber[nextuglyindex] = minnum;while(*pMulitBy2*2 <= uglynumber[nextuglyindex] )pMulitBy2++;while(*pMulitBy3*3 <= uglynumber[nextuglyindex] )pMulitBy3++;while(*pMulitBy5*5 <= uglynumber[nextuglyindex] )pMulitBy5++;nextuglyindex++;}int answer = uglynumber[nextuglyindex-1];delete[] uglynumber;uglynumber = NULL;return answer;}
0 0
- 微软100题(64)寻找第1500个丑数
- 寻找第1500个丑数
- 寻找第1500个丑数
- 经典算法题——寻找第1500个丑数
- 寻找丑数 【微软面试100题 第六十四题】
- 【算法题】寻找第K个丑数
- 寻找第k个丑数
- 寻找第K个丑数
- 寻找第k个丑数
- 微软等数据结构100(第61题开始)
- 微软100题第4题
- 微软100题第5题
- 微软100题第11题
- 微软100题第20题
- 微软面试100系列 第32题
- 算法学习笔记之寻找第1500个丑数
- 寻找和为定值的多个数 【微软面试100题 第二十一题】
- 微软面试100题---寻找和为定值的多个数
- android 逆向 去广告
- 用CornerStone配置SVN,HTTP及svn简单使用说明(含工具下载地址)
- parseInt() 函数
- 2014年最热门的国人开发开源软件TOP 100(Android:AFinal、CrossApp、Cocos2d-x、Seafile、dhroid、KJFrameForAndroid、RoboBin)
- Genymotion配置及使用教程
- 微软100题(64)寻找第1500个丑数
- ubuntu14.04 64位 GTX980显卡配置cuda6.5环境 用来跑cnn(caffe)
- 04-树4. Root of AVL Tree (25)
- Spark Standalone Mode 翻译和实验
- js页面跳转的问题(跳转到父页面、最外层页面、本页面)
- 酒店预订分销系统和分销商
- 分享在github超酷超炫特效动画,不看你会后悔的。
- ubuntu下有线连接局域网网线连接互联网
- expdp impdp命令使用