leetcode:数学: Perfect Squares(279)

原创 2016年08月30日 15:53:29

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

For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9.


class Solution {
public:
    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;
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

279. Perfect Squares-Leetcode(关于DP的再深入研究)

先上题目: Given a positive integer n, find the least number of perfect square numbers (for example, 1,...

leetcode_279. Perfect Squares

leetcode_279. Perfect Squares

leetcode谷歌面试题279. Perfect Squares

无权图广搜谷歌面试题

[LeetCode] 279. Perfect Squares 解题报告

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, ...
  • a921122
  • a921122
  • 2017年02月19日 03:04
  • 150

leetcode 279. Perfect Squares-完美平方数|动态规划

原题链接:279. Perfect Squares 【思路-Java】 采用动态规划实现。用 dp[i] 数组存储第 i 个数的完美平方数。递推式为:dp[i] = Math.max(dp[j] + ...

[LeetCode] 279. Perfect Squares

[LeetCode] 279. Perfect Squares 的 DP、数学 两种解法
  • zhao_tw
  • zhao_tw
  • 2016年11月19日 20:07
  • 150

leetcode279-Perfect Squares

问题描述:Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4,...
  • will130
  • will130
  • 2016年02月16日 23:14
  • 172

leetcode 279 : Perfect Squares

1、原题如下 Given a positive integer n, find the least number of perfect square numbers (for example, 1,...

LeetCode Algorithms 279. Perfect Squares 题解

题目 Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4...

[LeetCode]problem 279. Perfect Squares

TAG动态规划;广度优先搜索;深度优先搜索;数论;四平方和定理;三平方和定理题目链接方法不会。不过是一道太有意思的题目了…参见Summary of 4 different solutions (BFS...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode:数学: Perfect Squares(279)
举报原因:
原因补充:

(最多只允许输入30个字)