zoukankan      html  css  js  c++  java
  • 264. Ugly Number II (Solution 2)

    package LeetCode_264
    
    import java.util.*
    
    /**
     * 264. Ugly Number II
     * https://leetcode.com/problems/ugly-number-ii/description/
     *
     * Write a program to find the n-th ugly number.
    Ugly numbers are positive numbers whose prime factors only include 2, 3, 5.
    
    Example:
    Input: n = 10
    Output: 12
    Explanation: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.
    
    Note:
    1 is typically treated as an ugly number.
    n does not exceed 1690.
     * */
    class Solution {
        /*
          solution 1: bruce force, TLE, Time complexity:O(nlogn), Space complexity:O(1)
        * solution 2: Min Heap, Time complexity:O(nlogn), Space complexity:O(n);
        * */
        fun nthUglyNumber(n: Int): Int {
          //solution 2
            val factorsList = listOf(2, 3, 5)
            val queue = PriorityQueue<Long>()
            var result = 1L
            queue.offer(result)
            for (i in 0 until n) {
                result = queue.poll()
                for (factor in factorsList) {
                    val uglyNum = result * factor
                    if (!queue.contains(uglyNum)) {
                        queue.offer(uglyNum)
                    }
                }
            }
            return result.toInt()
        }
    }
  • 相关阅读:
    开课博客
    高级UI组件(二)
    《梦断代码》读后感(三)
    高级UI组件
    今日总结
    今日总结
    android中关于时间的控件
    单选按钮和复选框
    Android开发中按钮的语法
    布局管理器的嵌套
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13538743.html
Copyright © 2011-2022 走看看