leetcode--Perfect Squares
2017-05-02 21:23
253 查看
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.
思路:建立一个长度为n+1的数组,i从0循环到n,j从1循环到i+j*j <= n的位置,然后每次更新数组中下标为i+j*j的值,数组中下标为i的元素代表正整数i能被多少个完全平方数组成。 class Solution { public: int numSquares(int n) { 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(); } }; 思路:递归,遍历所有比n小的完全平方数,然后对n与完全平方数的差值递归调用函数,目不断更新最终结果,最后找到最小的那个,效率很慢,但最容易实现 class Solution { public: int numSquares(int n) { int res = n, num = 2; while (num * num <= n) { int a = n / (num * num), b = n % (num * num); res = min(res, a + numSquares(b)); ++num; } return res; } };
相关文章推荐
- leetcode(279). Perfect Squares
- Perfect Squares -- leetcode
- 【leetcode】Perfect Squares (#279)
- leetcode 279 : Perfect Squares
- leetcode 279 : Perfect Squares
- LeetCode: Perfect Squares
- Leetcode 279 Perfect Squares
- *LeetCode-Perfect Squares
- [leetcode-279]Perfect Squares(java)
- leetcode---Perfect Squares---动规、回溯
- LeetCode(279)Perfect Squares
- 【leetcode题解】【有问题,python没AC,java却过了】【M】【66】Perfect Squares
- [Leetcode]Perfect Squares
- [LeetCode 279] Perfect Squares
- LeetCode:Perfect Squares
- LeetCode----Perfect Squares
- LeetCode -- Perfect Squares
- [Leetcode 279] Perfect Squares
- Leetcode Perfect Squares
- [LeetCode] Perfect Squares 完全平方数