面试题34:丑数
2015-10-09 16:45
836 查看
题目描述
我们把只包含因子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; }
相关文章推荐
- 面试题33:把数组排成最小的数
- 程序员笑话大全(程序员这些笑话,你都懂吗)
- 面试题32:从1到n整数中1出现的次数
- 面试题31:连续子数组的最大和
- 面试
- 人在职场,如何进行“功利性”阅读
- 海量数据处理:十道面试题与十个海量数据处理方法总结
- 黑马程序员---成长之路-----OC之基础篇self关键字
- Android面试题2( 有答案)
- 黑马程序员---Java异常和文件
- 一些编程面试题
- 【扣丁学堂】“野生”程序员
- iOS面试题目
- 黑马程序员---成长之路-----OC之基础篇封装
- 成为核心程序员的一些建议
- Java工程师的一道面向对象面试题
- 程序员娶妻之道
- 为什么国外程序员爱用 Mac?
- PHP程序员不应该忽略的3点
- 从一个程序员笑话看软件开发管理