leetcode:数学:Perfect Squares(279)

来源:互联网 发布:淘宝注册资金要多少钱 编辑:程序博客网 时间:2024/05/22 02:05

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;    }};
0 0
原创粉丝点击