【剑指Offer-时间效率平衡】寻找第N个丑数
2018-01-12 22:49
309 查看
题目描述
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路分析
还没得梳理好,后期补上。代码实现
public class Solution { // 假定N的最大值为1500 private int[] data = new int[1500]; public int GetUglyNumber_Solution(int index) { if(index <= 0){ return 0; } // 第一个数为丑数 data[0] = 1; // 设置三个指针,分别表示当前可以获得下个丑数的基数的位置 int i2 = 0; int i3 = 0; int i5 = 0; // 获取下一个丑数 int currentIndex = 1; int next = data[0]; while(currentIndex < index){ // 计算下一个丑数 next = min(data[i2] * 2,data[i3]* 3, data[i5] * 5); if(data[i2] * 2 <= next){ i2 ++; } if(data[i3] * 3 <= next){ i3 ++; } if(data[i5] * 5 <= next){ i5 ++; } data[currentIndex ++] = next; } return next; } private int min(int a,int b, int c){ int min = a < b ? a : b; min = min < c ? min : c; return min; } }
4000
相关文章推荐
- 剑指offer 5.3 时间与空间效率平衡 -丑数
- (C++)剑指offer-34:第一个只出现一次的字符位置(时间空间效率的平衡)
- 剑指offer 36题 【时间空间效率的平衡】数组中的逆序对
- 【剑指Offer-时间效率平衡】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- (C++)剑指offer-35:数组中的逆序对(时间空间效率的平衡)(未完成)
- 剑指offer-5-面试36:数组中的逆序对(时间效率和空间效率的平衡)
- (C++)剑指offer-36:两个链表的第一个公共结点(时间空间效率的平衡)
- 剑指offer 37题 【时间空间效率的平衡】两个链表的第一个公共结点
- 剑指offer 算法 (时间空间效率的平衡)
- 剑指offer:(35)时间效率和空间效率的平衡 :第一个只出现一次的字符
- 【剑指offer】5.3时间效率与空间效率的平衡——面试题34:丑数
- 【剑指Offer-时间效率的平衡】输入两个链表,找出它们的第一个公共结点。
- 剑指Offer---寻找第N个丑数
- 剑指offer——优化时间和空间效率
- 剑指offer-5-面试32:从 1 到 n 整数中 1 出现的次数(时间效率)
- 剑指offer 31题 【时间效率】连续子数组的最大和
- 剑指offer 第五章 优化时间和空间效率
- 剑指offer-第五章优化时间和空间效率(数组中出现次数超过一半的数字)
- 【剑指offer】5.2时间效率——面试题30:最小的k个数
- ##剑指offer 5.2 时间效率3 -1到N整数中1出现的次数