zoukankan      html  css  js  c++  java
  • 279. Perfect Squares

    package LeetCode_279
    
    import java.util.*
    import kotlin.collections.HashSet
    
    /**
     * 279. Perfect Squares
     * https://leetcode.com/problems/perfect-squares/description/
     *
     * Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n.
    
    Example 1:
    Input: n = 12
    Output: 3
    Explanation: 12 = 4 + 4 + 4.
    
    Example 2:
    Input: n = 13
    Output: 2
    Explanation: 13 = 4 + 9.
     */
    
    class Solution {
        /*
        * solution:bfs, find out the shortest path be the answer
        * Time complexity:O(n*sqrt(n)), Space complexity:O(n)
        * */
        fun numSquares(n: Int): Int {
            if (n == 0) {
                return 0
            }
            val levels = IntArray(n + 1)
            val visited = HashSet<Int>()
            val queue = LinkedList<Int>()
            val start = 0
            visited.add(start)
            queue.offer(start)
            while (queue.isNotEmpty()) {
                val cur = queue.poll()
                if (cur == n) {
                    return levels[cur]
                }
                var i = 1
                while (cur + i * i <= n) {
                    val new = cur + i * i
                    if (!visited.contains(new)) {
                        visited.add(new)
                        levels[new] = levels[cur] + 1
                        queue.offer(new)
                    }
                    i++
                }
            }
            return levels[start]
        }
    }
  • 相关阅读:
    windows平台下一款强大的免费代理获取工具
    彻底搞懂Git Rebase
    line-height
    text-indent
    text-decoration
    text-align
    color
    CSS属性汇总
    font
    font-style
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13326382.html
Copyright © 2011-2022 走看看