剑指Offer——丑数
2017-11-01 00:26
169 查看
题目描述:
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
分析:
用三个指针,*2,*3,*5慢慢往后移,每个丑数都要*2,*3,*5,找出最小的数加入数组中。
如果新加的丑数为指针为*2的数*2得到,那么*2指针后移一位。其他*3,*5相同。
代码:
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
分析:
用三个指针,*2,*3,*5慢慢往后移,每个丑数都要*2,*3,*5,找出最小的数加入数组中。
如果新加的丑数为指针为*2的数*2得到,那么*2指针后移一位。其他*3,*5相同。
代码:
1 class Solution { 2 public: 3 int GetUglyNumber_Solution(int index) { 4 if(index < 7) return index; 5 vector<int> res(index); 6 res[0] = 1; 7 int t2 = 0, t3 = 0, t5 = 0; 8 int r2, r3, r5; 9 for(int i = 1; i < index; i++) { 10 r2 = res[t2] * 2; 11 r3 = res[t3] * 3; 12 r5 = res[t5] * 5; 13 res[i] = min(r2, min(r3, r5)); 14 if(res[i] == r2) t2++; 15 if(res[i] == r3) t3++; 16 if(res[i] == r5) t5++; 17 } 18 return res[index - 1]; 19 } 20 };
相关文章推荐
- 剑指offer34_丑数
- 剑指offer-丑数
- 剑指offer 编程题(32):第N个丑数
- 【剑指offer 面试题34】丑数
- 剑指Offer34 丑数
- 剑指 offer代码解析——面试题34丑数
- 剑指offer——丑数
- 剑指offer-丑数
- 剑指Offer:面试题34——丑数(java实现)
- 剑指OFFER之丑数(九度OJ1214)
- 剑指offer 34 丑数
- 剑指offer ——寻找丑数
- LintCode-剑指Offer-(4)丑数
- 【剑指Offer学习】【面试题34:丑数】
- 剑指offer 5.3 时间与空间效率平衡 -丑数
- 剑指Offer面试题34(Java版):丑数
- 剑指Offer---寻找第N个丑数
- 剑指offer-丑数(Java)
- 剑指offer:丑数
- 【剑指offer】之丑数