leetcode264. Ugly Number II
来源:互联网 发布:java编译和运行命令 编辑:程序博客网 时间:2024/05/11 21:30
264. Ugly Number II
Write a program to find the n-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.
解法一
三个序列,2的倍数,3的倍数,5的倍数,每次取最小的值。然后再乘对应的factor(2,3,5)。
public class Solution { public int nthUglyNumber(int n) { int[] ugly = new int[n]; ugly[0] = 1; int index2 = 0, index3 = 0, index5 = 0; int factor2 = 2, factor3 = 3, factor5 = 5; for (int i = 1; i < n; i++) { int min = Math.min(Math.min(factor2, factor3), factor5); ugly[i] = min; if (min == factor2) { factor2 = 2 * ugly[++index2]; } if (min == factor3) { factor3 = 3 * ugly[++index3]; } if (min == factor5) { factor5 = 5 * ugly[++index5]; } } return ugly[n - 1]; }}
解法二
public class Solution { public int nthUglyNumber(int n) { if(n <= 0) return -1; // get rid of corner cases if(n == 1) return 1; // base case int t2 = 0, t3 = 0, t5 = 0; //pointers for 2, 3, 5 int[] k = new int[n]; k[0] = 1; for(int i = 1; i < n ; i ++) { k[i] = Math.min(k[t2] * 2, Math.min(k[t3] * 3,k[t5] * 5)); if(k[i] == k[t2] * 2) t2++; if(k[i] == k[t3] * 3) t3++; if(k[i] == k[t5] * 5) t5++; } return k[n-1]; }}
1 0
- LeetCode264. Ugly Number II
- leetcode264. Ugly Number II
- leetcode264-Ugly Number II
- leetcode264.[DP][math][leep] Ugly Number II
- Ugly Number Ugly Number II
- Leetcode -- Ugly Number II
- LeetCode: Ugly Number II
- [leetcode] Ugly Number II
- 264 Ugly Number II
- Leetcode: Ugly Number II
- [LeetCode] Ugly Number II
- Ugly Number II
- LeetCode Ugly Number II
- Ugly Number I II
- [leetcode] Ugly Number II
- [LeetCode] Ugly Number II
- LeetCode ||Ugly Number II
- Ugly Number II
- html 文本阴影效果
- 汇编将32位转换为10进制输出
- 关于NotificationListenerService监听时有失败的处理
- 【SPA】单页Web应用(二)
- Java进制转换
- leetcode264. Ugly Number II
- C/C++ 异常处理
- 12年了,CSDN,你还好吗?
- 希尔排序与堆排序
- Win32 SDK 学习笔记2
- python | isinstance 判断数据类型
- final、finally与finalize三者的区别
- TED如何掌控你的时间(第一天)
- Mac平台下,GitHub客户端重传遇到的问题