文章目录

  • 题目描述
  • 思路 & 代码

题目描述

  • 类似找零钱,思路和代码框架基本上一样

思路 & 代码

  • 考虑到这么一点:某完全平方数,肯定是由另一更小的完全平方数 + 一平方组成
  • 比如 16 = 8 + 4 = (完全平方数8=22+22)+22(完全平方数8=2^2 + 2^2) + 2^2(完全平方数8=22+22)+22
  • 那么好办了,直接用dp冲!
class Solution {/*** 动态规划,dp[i]代表 i 的完全平方数的最少数量* 如何考虑?比如 dp[12] = dp[8] + 1 (此处为 2 * 2)* 也就是一个数,一定是由某一个较小数的完全平方数 加上 一个整数的平方组成的*/public int numSquares(int n) {int[] dp = new int[n + 1];// 时间复杂度O(n * sqrt(n))for(int i = 1; i <= n; i++){// 初始化:使用最差情况,全为 1^2 组成dp[i] = i;for(int j = 1; i - j * j >= 0; j++){// 下式中 + 1 就是 j * jdp[i] = Math.min(dp[i], dp[i - j * j] + 1);}}return dp[n];}
}
  • 时间复杂度为O(n * sqrt(n)),代码重点是for j的循环结束条件 & 状态转移方程
  • 无注释版
class Solution {public int numSquares(int n) {int[] ans = new int[n + 1];for(int i = 1; i <= n; i++) {ans[i] = i;for(int j = 1; j * j <= i; j++) {ans[i] = Math.min(ans[i], ans[i - j * j] + 1);}}return ans[n];}
}

【LeetCode笔记】279. 完全平方数(Java、动态规划)相关推荐

  1. 【LeetCode】279. 完全平方数 【动态规划】【四平方和定理】

    题目链接:https://leetcode-cn.com/problems/perfect-squares/ 题目介绍 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使 ...

  2. 279. 完全平方数(java)

    279. 完全平方数 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, -)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12 ...

  3. 279. 完全平方数 golang 动态规划

    题目 类似题目:322. 零钱兑换 279. 完全平方数 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, -)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 ...

  4. leetcode 279. Perfect Squares | 279. 完全平方数(动态规划,Java)

    题目 https://leetcode.com/problems/perfect-squares/ 题解:动态规划 参考:[宫水三叶]详解完全背包一维空间优化推导(附背包问题攻略) 首先初始化长度为 ...

  5. [周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]

    [问题描述]5457. 和为奇数的子数组数目[中等] [解答思路] 1. 动态规划 第 1 步:设计状态 dp[i][0] 记录以arr[i]结尾的和为奇数数量 dp[i][1] 记录以arr[i]结 ...

  6. 279. 完全平方数 (数学定理 四平方数之和定理)

    LeetCode: 279. 完全平方数 这道题如果知道数学定理之后,相当于告诉你: 任何正整数都可以拆分成不超过4个数的平方和 -> 答案只可能是1,2,3,4 如果一个数最少可以拆成4个数的 ...

  7. Java实现 LeetCode 279 完全平方数

    279. 完全平方数 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, -)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12 输出: ...

  8. leetcode - 279. 完全平方数

    279. 完全平方数 -------------------------------------------- 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, -)使得它们的和等 ...

  9. Leetcode 279. 完全平方数

    Leetcode 279. 完全平方数 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/perfect-squares/ ...

  10. LeetCode 279.完全平方数

    LeetCode 279.完全平方数 bfs写法,还有四平方定理,那个看不懂 public:int numSquares(int n) {vector<bool> vis(n+1,fals ...

最新文章

  1. c++窗口管理系统是什么_优秀的食堂管理系统让你对校园生活更充满希望
  2. 关于JavaScript为何要限制跨域访问
  3. Android基础_数据存储
  4. PyTorch随笔-3
  5. java并查集找朋友圈_图—并查集(解决朋友圈问题)
  6. asp.net mvc5 oracle,ASP.NET MVC5网站开发用户注册(四)
  7. vnc 树莓派 链接_树莓派 VNC Viewer 远程桌面配置教程
  8. 文章目录:使用VisualStudio 2010从分析到实施系列【共5+3篇】
  9. Unity3d UGUI 通用Confirm确认对话框实现(Inventory Pro学习总结)
  10. 2022年最新前端面试题
  11. 热度php代码,爬取知乎热度搜索标题并数据分析及可视化(示例代码)
  12. html5情人节贺卡,情人节贺卡祝福语
  13. android版本下载京东,京东下载2021安卓最新版_手机app官方版免费安装下载_豌豆荚...
  14. 救救我吧,今年27岁,想转行学大数据开发
  15. 配置SSH服务远程连接空闲超时退出时间(包括SSH无法登录、登录缓慢)
  16. Ubuntu 18.04 安装googlepinyin 输入法
  17. 【学习OpenCV4】键盘鼠标操作总结
  18. 关于《冬天时我喜欢靠近温暖的事》这首歌 (民谣在路上)
  19. Android上好看的倒数日APP,颜值超高的倒数日 App,让 Android 手机桌面好看 2 倍 - Hurry #Android...
  20. HP CQ35 Windows7声卡驱动安装不上问题

热门文章

  1. c语言多个子函数声明,C函数在多个源文件中的声明和定义
  2. linux日志添加到文件,关于linux:将变量中的内容追加到日志文件中
  3. 手机上python编程工具3和3h有区别吗_Python3.5内置模块之time与datetime模块用法实例分析...
  4. 千兆网线8根线定义图_家中的网线断裂/不够长,如何接线才最合适?
  5. Spring Data JPA 从入门到精通~Specification工作中的一些扩展
  6. Extract Interface(提炼接口)
  7. 函数的凹凸性证明_理解图灵机和递归函数的等价性证明
  8. friso mysql_非sqlite和nigix的开源c项目
  9. opencv python 直方图反向投影_python OpenCV学习笔记直方图反向投影的实现
  10. PID:我应该何时计算积分项?