279. Perfect Squares
来源:互联网 发布:淘宝代销退货流程 编辑:程序博客网 时间:2024/05/01 15:09
279. 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
.
1. 每个数n均可以写成n=i*i+(n-i*i);故x[n]=1+x[n-i*i]
int numSquares(int n) { vector<int> x(n+1,n); x[0]=0; for(int i=1;i<=n;i++) for(int j=1;j*j<=i;j++) x[i]=min(x[i],1+x[i-j*j]); return x[n]; }
2.加了static,对于大量测试用例的重复计算,可以加快速度点击打开链接
int numSquares(int n) { static vector<int> x({0}); while(x.size()<=n) { int m=x.size(); int tx=m; for(int i=1;i*i<=m;i++) { tx=min(tx,x[m-i*i]+1); } x.push_back(tx); } return x[n]; }
3.BFS,假设n,则把1,2,...,n,看成一个个节点,它们组成一个图,起点分别为1*1,2*2,..,i*I,(i*i<n),则可以通过这样的边将点链接起来。如果n-j=i*i,则它们是相邻的边。因此,可以通过广度优先搜索解决。
class Solution {public: int numSquares(int n) { if(n<=0) return 0; vector<int> x(n,0); vector<int> perfectsq; int i,j; queue<int> q; for(i=1;i*i<=n;i++) { x[i*i-1]=1; perfectsq.push_back(i*i); q.push(i*i); } if(perfectsq.back()==n) return 1; int curlev=1; while(!q.empty()) { curlev++; int qsize=q.size(); for(i=0;i<qsize;i++) { int tmp=q.front(); for(auto j:perfectsq) { if(tmp+j==n) return curlev; else if(tmp+j<n&&x[tmp+j-1]==0) { x[tmp+j-1]=curlev; q.push(tmp+j); }else if(tmp+j>n) break; } q.pop(); } } return 0; }};
0 0
- 279.Perfect Squares
- [leetcode] 279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares LeetCode
- leetcode 279. Perfect Squares
- leetcode 279. Perfect Squares
- [LeetCode]279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- LeetCode-279.Perfect Squares
- LeetCode *** 279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- leetcode.279. Perfect Squares
- 279. Perfect Squares
- 279. Perfect Squares
- 盘点物联网领域常用的6大传感器
- jQuery data()
- kmalloc、vmalloc、malloc的区别
- 动态拼接LINQ查询条件的解决方案
- Camera.cullingMask常用操作
- 279. Perfect Squares
- Linux6 fo OracleRAC install
- 枚举BootDriverReinitialization
- URL优化之IIS7如何开启伪静态
- cas-单点登录逻辑模拟学习
- ExpandableList的用法
- LightOJ-1198-greedy
- nginx+keepalived+tomcat+memcached服务器集群搭建
- 【HNOI2004】 敲砖块 动态规划