剑指offer-丑数
2016-03-14 23:43
323 查看
题目描述
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:(时间换空间)
我们考虑一个数组,数组存储的是当前的丑数,以后的每个丑数,都是用之前的数组的元素相乘的来的。接下来就是如何得到后面的丑数并保证它是有序的。
可以想到,数组的第一个元素是1,1与2 3 5分别相乘,可以得到三个值,这三个值里面最小的,肯定就是下一个丑数的最大值,接着max2的下标后移,继续比较。、
public class Solution { public int GetUglyNumber_Solution(int index) { if (index <= 0) { return 0; } int[] pUglyNumbers = new int[index]; pUglyNumbers[0] = 1; int nextIndex = 1; int p2 = 0, p3 = 0, p5 = 0; while (nextIndex < index) { int min = (pUglyNumbers[p2]*2<pUglyNumbers[p3]*3)?pUglyNumbers[p2]*2:pUglyNumbers[p3]*3; min = (min<pUglyNumbers[p5]*5)?min:pUglyNumbers[p5]*5; pUglyNumbers[nextIndex] = min; while (pUglyNumbers[p2] * 2 <=pUglyNumbers[nextIndex]) { p2++; } while (pUglyNumbers[p3] * 3 <= pUglyNumbers[nextIndex]) { p3++; } while (pUglyNumbers[p5] * 5 <= pUglyNumbers[nextIndex]) { p5++; } nextIndex++; } int ugly=pUglyNumbers[nextIndex-1]; return ugly; } }
相关文章推荐
- BufferedReader类
- javascript 字符串
- HTML+CSS实战(二)——固定层效果
- javascript之面向对象程序设计(对象和继承)
- 用gulp替代fekit构建前端项目
- .jshintrc配置文件中的一些常用配置
- defer和async的区别
- HTML DOM display 属性
- html5 Web storage
- 模拟Jquery选择器
- node.js编写服务器
- JS新API标准 地理定位(navigator.geolocation)
- HTML5学习笔记(总结提炼版)——002 CSS
- [读书笔记]Effective Java 第一章
- Jquery的样式切换
- 01.阅读JQUERY源码——定义函数
- jQuery 关于 end() 方法的详细解释
- 00.阅读JQUERY源码——简目录
- html5 (个人笔记)
- 【GDOI 2016模拟3.14】garrafeira