LeetCode 279. Perfect Squares
来源:互联网 发布:高晓松酒驾事件知乎 编辑:程序博客网 时间:2024/06/11 06:53
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.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
解题用到了四平方和定理
有如下公式
这个定理就是讲,任何数都可以由4个平方数组成,即 n = a^2 + b^2 + c^2 + d^2,所以这题的答案已经限定在了 [1,4] 之间。
而上面这个公式的发明者-Adrien-Marie Legendre 又补充了这个定理:除了满足以上这个公式的数以外的任何数都可以由3个平方数组成。所以,这个答案又可以缩小范围了。范围都已经缩小到 [1,3] 了,我们开始求解。
class Solution { public int numSquares(int n) { //4的情况 int num = n; while (num % 4 == 0 && num != 0) { num /= 4; } if (num % 8 == 7) { return 4; } //1的情况 if (isSquare(n)) { return 1; } //2的情况 boolean flag = false; int p; for (int i = 1; (p = i*i) < num ; i++) { int yu = num - p; if (isSquare(yu)) { flag = true; break; } } return flag ? 2 : 3; } public boolean isSquare(int n) { double f = Math.sqrt(n); int m = (int) f; return m * m == n; }}
阅读全文
0 0
- [leetcode] 279. Perfect Squares
- 279. Perfect Squares LeetCode
- leetcode 279. Perfect Squares
- leetcode 279. Perfect Squares
- [LeetCode]279. Perfect Squares
- LeetCode-279.Perfect Squares
- LeetCode *** 279. Perfect Squares
- leetcode.279. Perfect Squares
- LeetCode 279. Perfect Squares
- [leetcode] 279. Perfect Squares
- Leetcode-279. Perfect Squares
- LeetCode 279. Perfect Squares
- Leetcode 279. Perfect Squares
- [LeetCode]279. Perfect Squares
- 【LeetCode】 279. Perfect Squares
- (LeetCode) 279. Perfect Squares
- LeetCode 279. Perfect Squares
- LeetCode#279. Perfect Squares
- curl 命令行下载工具使用方法小结
- Zenmap常用参数解释
- xml套json
- Java应用架构的演化之路
- 二叉树的镜像
- LeetCode 279. Perfect Squares
- 第四章 ALDS1_3_D:Areas on the Cross-Section Diagram
- 平均数
- Codeforces 18A 18B 18C
- java使用new和newInstance()创建对象的区别
- 训练计划
- eclipse 配置git过滤文件
- java应用架构
- java应用架构