博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Perfect Squares
阅读量:6367 次
发布时间:2019-06-23

本文共 1076 字,大约阅读时间需要 3 分钟。

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.

超时:

class Solution {public:    int numSquares(int n) {        if(n<=0)            return 0;        int sqr=1;        vector
vec; while(sqr*sqr<=n) { vec.push_back(sqr*sqr); ++sqr; } vector
path; int ret=INT_MAX; helper(vec,n,path,ret,0); return ret; } void helper(vector
&vec,int n,vector
&path,int &ret,int start) { if(n==0) { int len=path.size(); if(len

改进:

class Solution {public:    int numSquares(int n) {        int dp[n+1];        for(int i=0;i<=n;++i)        {            dp[i]=i;            for(int j=0;j*j<=i;++j)            {                dp[i]=min(dp[i],1+dp[i-j*j]);            }        }        return dp[n];    }};

 

转载地址:http://hbrma.baihongyu.com/

你可能感兴趣的文章
Android Dagger依赖注入框架浅析
查看>>
数据分析系统DIY1/3:CentOS7+MariaDB安装纪实
查看>>
常用分析工具
查看>>
PhotoShop切图
查看>>
[LeetCode] Water and Jug Problem 水罐问题
查看>>
java数组遍历——iterator和for方法
查看>>
Linux程序存储结构与进程结构堆和栈的区别【转】
查看>>
重置 radio 和 checkbox 的样式
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊和登录模块实现!)
查看>>
oc59--匿名分类
查看>>
redis 持久化
查看>>
机器学习算法总结
查看>>
高效的找出两个List中的不同元素
查看>>
Revit二次钢筋
查看>>
Vertx简介
查看>>
项目经理在项目各阶段的工作重点-更新版
查看>>
s3c2440中U-boot移植时执行cp.b提示:Flash not Erased【转】
查看>>
docker Redis的主从配置
查看>>
博文参考:Java编程中“为了性能”尽量要做到的一些地方
查看>>
【JAVASCRIPT】jquery实现ajax无刷新评论
查看>>