原题链接:https://leetcode-cn.com/problems/perfect-squares/

相关题目:leetcode算法题–零钱兑换

1、回溯法

就是暴力法,套路就是递归,但是有很多重复计算。

int numSquares(int n) {return func(n);
}int func(int n){int count=INT_MAX;if(n==0) return 0;for(int i=1;i*i<=n;i++)count=min(count,func(n-i*i)+1);return count;
}

2、回溯法+记忆化

就是在回溯法的基础上,用map存储,减少重复的计算。

int numSquares(int n) {map<int,int>m;func(n,m);return m[n];}int func(int n,map<int,int> &m){int count=INT_MAX;if(n==0) return 0;if(m.find(n)!=m.end()) return m[n];for(int i=1;i*i<=n;i++)count=min(count,func(n-i*i,m)+1);m[n]=count;return count;}

3、动态规划

相比于回溯法省去了压栈出栈的过程,不过不是很容易想到。

dp[i] i代表数为i,dp[i]代表数为i时最小组合数

转移方程

dp[i]=min(dp[i],dp[i-j*j])+1

代码:

int numSquares(int n){vector<int> dp(n+1,INT_MAX);dp[0]=0;for(int i=1;i<=n;i++){for(int j=1;j*j<=i;j++){dp[i]=min(dp[i],dp[i-j*j]+1);}}return dp[n];
}

其实就拿n=12来举例:

dp[0]=0
dp[1]=1
dp[2]=2
dp[3]=3
dp[4]=1
dp[5]=2
dp[6]=3
dp[7]=4
dp[8]=2
dp[9]=1
dp[10]=2
dp[11]=3
dp[12]=3

细细品,j*j起了很大的限制作用

leetcode算法题--完全平方数★相关推荐

  1. leetcode算法题--零钱兑换

    原题链接:https://leetcode-cn.com/problems/coin-change/ 相关题目:leetcode算法题–完全平方数★ 动态规划 dp[i] i从0到amount,dp[ ...

  2. LeetCode算法题-Nth Digit(Java实现)

    这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...

  3. LeetCode算法题-Reverse Linked List(Java实现)

    这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...

  4. LeetCode算法题-Convert a Number to Hexadecimal(Java实现)

    这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...

  5. leetcode算法题-- 买卖股票的最佳时机

    原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 这类股票题目请见leetcode算法题–最佳买卖股票时机含 ...

  6. leetcode算法题--买卖股票的最佳时机 II

    原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/ 这类股票题目请见leetcode算法题–最佳买卖股票 ...

  7. leetcode算法题--买卖股票的最佳时机含手续费

    原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 这类股票题目请见 ...

  8. leetcode算法题--不同的二叉搜索树

    原题链接:https://leetcode-cn.com/problems/unique-binary-search-trees/ 相关题目:leetcode算法题--不同的二叉搜索树 II 1.递归 ...

  9. LeetCode算法题-Minimum Depth of Binary Tree(Java实现)

    这是悦乐书的第168次更新,第170篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第27题(顺位题号是111).给定二叉树,找到它的最小深度.最小深度是沿从根节点到最近的 ...

最新文章

  1. CTF-练习平台-WEB之 签到题
  2. 弘成科技 java单例模式
  3. Prototype1.5.1源代码解读分析-3
  4. 线性表之链式存储结构_单链表相关算法
  5. UVA12039 Goldbach‘s Cardinality【欧拉筛法】
  6. springboot_poi思路
  7. MyBatis源码阅读(五) ---Mapper接口的获取过程
  8. uniapp编译成小程序代码过大的处理方法
  9. Intelligent reflecting surface (IRS) aided ISAC
  10. 外国人喜欢问中国人的大问题
  11. qt使用鼠标事件获取鼠标在QLabel和Ui界面中的点击位置
  12. 虚拟服务器liter,liter_sheng
  13. 计算机显示器有几个接口,电脑显示器的接口有几种?有哪些区别又要如何挑选呢?长知识了!...
  14. 刘彬20000词汇02
  15. 显卡性能比较 GPU common sense
  16. 56腾讯搜狐优酷视频,utubu 视频去重去水印去logo字幕工具 搜狐网易爱拍b站视频,今日头条视频...
  17. 南华大学2022第五届网络安全竞赛wp
  18. [SQL]关系代数基本概念(包含对应例子讲解)
  19. Python作业day2购物车
  20. 微信小程序拍照截取指定区域图片(话不多说,直接上代码)

热门文章

  1. python乘法口诀-怎么用Python把这样的乘法口诀表打出来?
  2. 学python可以干嘛-学习Python可以做什么
  3. python一千行入门代码-Python – 一次从文件中读取1000行
  4. pythonurllib模块-Python3学习笔记(urllib模块的使用)
  5. 精通python-精通Python设计模式
  6. 给想学python-零基础的小白,如何学Python才能更快就业?
  7. python语言入门w-python3入门之类
  8. 以下可以采用python语言保留字的是-模拟试卷C单项选择题
  9. Jetson Xavier NX上安装scipy报错:numpy.distutils.system_info.NotFoundError: No lapack/blas resources found
  10. php多规格多价格,不同规格的不同价格是怎么实现的呢?? 看这里