leetcode算法题--完全平方数★
原题链接: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算法题--完全平方数★相关推荐
- leetcode算法题--零钱兑换
原题链接:https://leetcode-cn.com/problems/coin-change/ 相关题目:leetcode算法题–完全平方数★ 动态规划 dp[i] i从0到amount,dp[ ...
- LeetCode算法题-Nth Digit(Java实现)
这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...
- LeetCode算法题-Reverse Linked List(Java实现)
这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...
- LeetCode算法题-Convert a Number to Hexadecimal(Java实现)
这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...
- leetcode算法题-- 买卖股票的最佳时机
原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 这类股票题目请见leetcode算法题–最佳买卖股票时机含 ...
- leetcode算法题--买卖股票的最佳时机 II
原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/ 这类股票题目请见leetcode算法题–最佳买卖股票 ...
- leetcode算法题--买卖股票的最佳时机含手续费
原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 这类股票题目请见 ...
- leetcode算法题--不同的二叉搜索树
原题链接:https://leetcode-cn.com/problems/unique-binary-search-trees/ 相关题目:leetcode算法题--不同的二叉搜索树 II 1.递归 ...
- LeetCode算法题-Minimum Depth of Binary Tree(Java实现)
这是悦乐书的第168次更新,第170篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第27题(顺位题号是111).给定二叉树,找到它的最小深度.最小深度是沿从根节点到最近的 ...
最新文章
- CTF-练习平台-WEB之 签到题
- 弘成科技 java单例模式
- Prototype1.5.1源代码解读分析-3
- 线性表之链式存储结构_单链表相关算法
- UVA12039 Goldbach‘s Cardinality【欧拉筛法】
- springboot_poi思路
- MyBatis源码阅读(五) ---Mapper接口的获取过程
- uniapp编译成小程序代码过大的处理方法
- Intelligent reflecting surface (IRS) aided ISAC
- 外国人喜欢问中国人的大问题
- qt使用鼠标事件获取鼠标在QLabel和Ui界面中的点击位置
- 虚拟服务器liter,liter_sheng
- 计算机显示器有几个接口,电脑显示器的接口有几种?有哪些区别又要如何挑选呢?长知识了!...
- 刘彬20000词汇02
- 显卡性能比较 GPU common sense
- 56腾讯搜狐优酷视频,utubu 视频去重去水印去logo字幕工具 搜狐网易爱拍b站视频,今日头条视频...
- 南华大学2022第五届网络安全竞赛wp
- [SQL]关系代数基本概念(包含对应例子讲解)
- Python作业day2购物车
- 微信小程序拍照截取指定区域图片(话不多说,直接上代码)
热门文章
- python乘法口诀-怎么用Python把这样的乘法口诀表打出来?
- 学python可以干嘛-学习Python可以做什么
- python一千行入门代码-Python – 一次从文件中读取1000行
- pythonurllib模块-Python3学习笔记(urllib模块的使用)
- 精通python-精通Python设计模式
- 给想学python-零基础的小白,如何学Python才能更快就业?
- python语言入门w-python3入门之类
- 以下可以采用python语言保留字的是-模拟试卷C单项选择题
- Jetson Xavier NX上安装scipy报错:numpy.distutils.system_info.NotFoundError: No lapack/blas resources found
- php多规格多价格,不同规格的不同价格是怎么实现的呢?? 看这里