【Leetcode】Perfect Squares
来源:互联网 发布:蜂窝数据打开自动关闭 编辑:程序博客网 时间:2024/06/04 01:29
题目链接:https://leetcode.com/problems/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.
For example, given n = 12
, return 3
because 12 = 4 + 4 + 4
; given n = 13
, return 2
because 13 = 4 + 9
.
思路:
n=m^2+s
m=(int)Math.sqrt(n) 向下取整 表最大可能的完全平方数 c[i]表示组成i需要的最少完全平方数的个数 递推公式:
c[i] =1+c[s] 考虑12=3^2+3 c[12]=1+c[3]=1+3=4, 但12=4+4+4 即c[12]=3
所以不是m为最大的平方数就一定能取得c[i]的,需要遍历 所有j<m n=j^2+k min(1+c[k])
算法:
public int numSquares(int n) { int c[] = new int[n + 1]; for (int i = 1; i <= n; i++) { int tmp = (int) Math.sqrt(i); c[i] = c[i - tmp * tmp] + 1; for (int j = tmp - 1; j >= 1; j--) { tmp = j * j; c[i] = Math.min(c[i - tmp] + 1, c[i]); } } return c[n]; }
2 0
- leetcode 279: Perfect Squares
- [Leetcode]Perfect Squares
- Leetcode 279 Perfect Squares
- Leetcode #279 Perfect Squares
- [leetcode 279]Perfect Squares
- Leetcode:279Perfect Squares
- Leetcode Perfect Squares
- LeetCode Perfect Squares
- leetcode Perfect Squares
- leetcode: Perfect Squares
- [LeetCode 279] Perfect Squares
- LeetCode -- Perfect Squares
- *LeetCode-Perfect Squares
- LeetCode----Perfect Squares
- [LeetCode]Perfect Squares
- Perfect Squares - LeetCode 279
- [Leetcode] Perfect Squares
- Perfect Squares -- leetcode
- 多无线AP用中继方式实现漫游
- Lua ---- LFS库的使用
- 【Leetcode】Increasing Triplet Subsequence
- 【Leetcode】Maximum Product Subarray
- UGUI事件
- 【Leetcode】Perfect Squares
- iOS之基础框架再认识
- 千杯酒中检测那一杯毒酒的问题及思考
- 2015年山东省第六届ACM大学生程序设计竞赛-B-Lowest Unique Price
- nod-1089-最长回文子串 V2
- Hust oj 1124 Final Destination(递推)
- C 语言 register 关键字
- lua脚本的PANIC函数
- 我为什么写博客