zoukankan      html  css  js  c++  java
  • [LintCode] Perfect Squares 完全平方数

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n.

    Example
    Given n = 12, return 3 because 12 = 4 + 4 + 4
    Given n = 13, return 2 because 13 = 4 + 9

    LeetCode上的原题,请参见我之前的博客Perfect Squares

    解法一:

    class Solution {
    public:
        /**
         * @param n a positive integer
         * @return an integer
         */
        int numSquares(int n) {
            while (n % 4 == 0) n /= 4;
            if (n % 8 == 7) return 4;
            for (int a = 0; a * a <= n; ++a) {
                int b = sqrt(n - a * a);
                if (a * a + b * b == n) {
                    return !!a + !!b;
                }
            }
            return 3;
        }
    };

    解法二:

    class Solution {
    public:
        /**
         * @param n a positive integer
         * @return an integer
         */
        int numSquares(int n) {
            while (n % 4 == 0) n /= 4;
            if (n % 8 == 7) return 4;
            vector<int> dp(n + 1, INT_MAX);
            dp[0] = 0;
            for (int i = 0; i < n; ++i) {
                for (int j = 1; i + j * j <= n; ++j) {
                    dp[i + j * j] = min(dp[i + j * j], dp[i] + 1);
                }
            }
            return dp.back();
        }
    };

    解法三:

    class Solution {
    public:
        /**
         * @param n a positive integer
         * @return an integer
         */
        int numSquares(int n) {
            while (n > 0 && n % 4 == 0) n /= 4;
            if (n % 8 == 7) return 4;
            int res = n, i = 2;
            while (i * i <= n) {
                int a = n / (i * i), b = n % (i * i);
                res = min(res, a + numSquares(b));
                ++i;
            }
            return res;
        }
    };
  • 相关阅读:
    统计MySQL数据库硬盘占用量大小
    zookeeper 集群安装与配置
    On Java 8中文版 英雄召集令
    下划线参数转成驼峰
    在Ubuntu 18.04中安装JDK 8
    GIT和GitHub的使用总结
    Python目录
    selenium代码实例
    Fiddler请求图标含义
    Tensorflow之神经网络
  • 原文地址:https://www.cnblogs.com/grandyang/p/5448521.html
Copyright © 2011-2022 走看看