剑指offer——面试题34:丑数
来源:互联网 发布:东欧 历史 知乎 编辑:程序博客网 时间:2024/06/08 18:26
bool IsUgly(int number){ while(number % 2 == 0) number /= 2; while(number % 3 == 0) number /= 3; while(number % 5 == 0) number /= 5; return (number == 1) ? true : false;}
int GetUglyNumber_Solution1(int index){ if(index <= 0) return 0; int number = 0; int uglyFound = 0; while(uglyFound < index) { ++number; if(IsUgly(number)) { ++uglyFound; } } return number;}
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;}
0 0
- 剑指offer——面试题34:丑数
- 剑指offer——面试题34:丑数
- [剑指offer][面试题34]丑数
- [剑指offer]面试题34:丑数
- 剑指Offer:面试题34 丑数
- 剑指offer 面试题34 丑数
- 剑指offer-面试题34:丑数
- 剑指offer面试题34:丑数
- 剑指Offer----面试题34:丑数
- 剑指offer面试题34:丑数
- 剑指offer--面试题34:丑数
- 【剑指offer】面试题34-丑数
- 剑指offer-面试题34-丑数
- 剑指offer-面试题34-丑数
- 剑指offer 面试题34 丑数
- 剑指offer面试题[34]丑数
- 【剑指Offer】面试题34:丑数
- 剑指offer面试题——丑数
- Eclipse快捷键 10个最有用的快捷键
- 设计模式一日一练:中介者模式(Mediator)
- Hibernate 文件配置
- 每日立会实践
- 使用命令窗口运行java程序
- 剑指offer——面试题34:丑数
- Java提取两个字符串中的相同元素
- mysql基础----数据库备份与还原(十三)
- response header less的问题
- poker
- Alcatraz的安装
- 第三课后第五题
- 近几日想研究下echarts控件,需要用到异步加载机制,不想搭后台,便使用时延函数代替了异步加载
- The Rendering Pipeline