领扣LintCode问题答案-4. 丑数 II

领扣LintCode问题答案-4. 丑数 II

目录

  • 4. 丑数 II
  • 鸣谢

4. 丑数 II

设计一个算法,找出只含素因子2,3,5 的第 n 小的数。
符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12…
我们可以认为 1 也是一个丑数。

样例 1:

输入:9
输出:10

样例 2:

输入:1
输出:1

public class Solution {
     
    /**
     * @param n: An integer
     * @return: return a  integer as description.
     */
    public int nthUglyNumber(int n) {
     
        // write your code here
		long ret = 1;

		TreeSet<Long> treeSet = new TreeSet<Long>();
		treeSet.add(ret);

		while (n-- > 0) {
     
			ret = treeSet.pollFirst();
			long v = ret * 2;
			if (v > 0) {
     
				treeSet.add(v);
			}
			v = ret * 3;
			if (v > 0) {
     
				treeSet.add(v);
			}
			v = ret * 5;
			if (v > 0) {
     
				treeSet.add(v);
			}
		}

		return (int) ret;

    }
}

原题链接点这里

鸣谢

非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。

你可能感兴趣的:(算法,算法)