力扣hot100 完全平方数 完全背包 滚动数组 四平方和定理

Problem: 279. 完全平方数
在这里插入图片描述

文章目录

  • 思路
  • 💖 完全背包
  • 💖 滚动数组优化
  • 💖 四平方和定理

思路

👨‍🏫 三叶神解

👨‍🏫 数学解法

💖 完全背包

⏰ 时间复杂度: O ( n 2 n ) O(n^2 \sqrt{n}) O(n2n )

class Solution {int INF = 0x3f3f3f3f;public int numSquares(int n){List<Integer> list = new ArrayList<>();int t = 1;while (t * t <= n){list.add(t * t);t++;}int m = list.size();int[][] f = new int[m + 1][n + 1];// f[i][j] 表示考虑前 i 个物品,凑出 j 所使用的最小元素个数Arrays.fill(f[0], INF);// 在 0 个物品中选,除了价值 0 外都是非法情况f[0][0] = 0;for (int i = 1; i <= m; i++){int x = list.get(i - 1);// x 表示当前物品的 价值for (int j = 0; j <= n; j++){f[i][j] = f[i - 1][j];// 不选当前物品for (int k = 1; k * x <= j; k++)// 选取 k 个当前物品if (f[i - 1][j - k * x] != INF)f[i][j] = Math.min(f[i][j], f[i - 1][j - k * x] + k);}}return f[m][n];}
}

💖 滚动数组优化

⏰ 时间复杂度: O ( n n ) O(n\sqrt{n}) O(nn )在这里插入图片描述

class Solution {public int numSquares(int n){int[] f = new int[n + 1];//f[i] 表示和为 i 的最小完全平方数和 的数量Arrays.fill(f, 0x3f3f3f3);f[0] = 0;for (int t = 1; t * t <= n; t++){int x = t * t;for (int j = x; j <= n; j++)f[j] = Math.min(f[j], f[j - x] + 1);}return f[n];}
}

💖 四平方和定理

class Solution {public int numSquares(int n) {//判断是否是 1if (isSquare(n)) {return 1;}//判断是否是 4int temp = n;while (temp % 4 == 0) {temp /= 4;}if (temp % 8 == 7) {return 4;}//判断是否是 2for (int i = 1; i * i < n; i++) {if (isSquare(n - i * i)) {return 2;}}return 3;}//判断是否是平方数private boolean isSquare(int n) {int sqrt = (int) Math.sqrt(n);return sqrt * sqrt == n;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413519.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-基础篇-类与对象/面向对象程序设计

文章目录 思维导图是何物类定义类&#x1f4da; class类的成员&#x1f4da;类的继承性&#x1f4da;封装性&#x1f4da;多态性 对象面向对象&#x1f4da;创建对象&#x1f4da;销毁对象&#x1f4da; 类和对象关系必背必记专业英语学习角 思维导图 是何物 类 “类”是物以…

【Flutter 问题系列第 80 篇】TextField 输入框组件限制可输入的最大长度后,输入的内容中包含表情符号时,获取输入的内容数还是会超出限制的问题

这是【Flutter 问题系列第 80 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 博文当前所用 Flutter SDK&#xff1a;3.10.5、Dart SDK&#xff1a;3.0.5 一&#xff1a;问题描述 在输入用户名称、简介等内容时&#xff0c;一般我们都会限制输入框内最大可输入…

VueSupercharge 精通指南:构建超级状态管理 Vue.js 应用

一、介绍 1.1 Vuex 是什么 &#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 1.2 什么是“状态管理模式”&#xff1f; 这个状态自管理应用…

GPT APP的开发步骤

开发一个GPT&#xff08;Generative Pre-trained Transformer&#xff09; Store&#xff08;存储&#xff09;涉及到使用预训练的语言模型&#xff08;例如GPT-3&#xff09;来生成和管理内容。以下是一般的步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&…

P4学习(四)实验一:Basic Forwarding

目录 一.前置知识二.实验过程记录1.找到实验文件2.拓扑图3.明确实验内容4.实验初体验 三. 编写解决方案1.Parse部分1.1 Code1.2 知识点解析 2.Ingress部分2.1 Code2.2 知识点解析 3.Deparse部分3.1 Code3.2 知识点 四.实验完成测试 一.前置知识 Linux基础命令(vim)V!Model的架…

wins安装paddle框架

一、安装 https://www.paddlepaddle.org.cn/install/quick?docurl/documentation/docs/zh/install/pip/windows-pip.html 装包&#xff08;python 的版本是否满足要求&#xff1a; 3.8/3.9/3.10/3.11/3.12&#xff0c; pip 版本为 20.2.2 或更高版本 &#xff09; CPU 版:…

day01_ Java概述丶开发环境的搭建丶常用DOS命令

编程常识 什么是编程&#xff1f; 所谓编程&#xff0c;就是人们可以使用编程语言对计算机下达命令&#xff0c;让计算机完成人们需要的功能。 编程语言的发展历程 第一代&#xff1a;机器语言 &#xff0c;机器语言由数字组成所有指令。计算器解析运行速度&#xff0c;最快…

DoYocms靶场(好像咩啥漏洞?)

这个doyocms靶场感觉没什么漏洞&#xff1f;&#xff1f;&#xff1f;不知道是不是我的错觉&#xff0c;还是说我的靶场配置有问题 OnlyOne 漏洞&#xff1a;支付漏洞 我们可以在靶场中找到一个商品购买界面 于是就可以先抓个包,就可以发现过滤的死死的 根本找不到鉴权参数&am…

《教师》期刊是什么级别的期刊?是正规期刊吗?能评职称吗?

《教师》杂志主要发表大中小学、幼儿园、特殊教育学校等各级各类学校教师的优秀教育、教学科研成果&#xff0c;旨在促进国内外学术交流&#xff0c;服务国家科学文化建设的需要。从创刊以来一直坚持“服务基础教育&#xff1b;探究教研教改&#xff1b;提高教师素质&#xff1…

SpringCloud GateWay 在全局过滤器中注入OpenFeign网关后无法启动

目录 一、问题 二、原因 1、修改配置 2、添加Lazy注解在client上面 3、启动成功 一、问题 当在gateway的全局过滤器GlobalFilter中注入OpenFeign接口的时候会一直卡在路由中&#xff0c;但是不会进一步&#xff0c;导致启动未成功也未报错失败 2024-01-18 22:06:59.299 I…

网工内推 | 运维工程师,最高10K*15薪,思科认证优先

01 乐歌股份 招聘岗位&#xff1a;服务器运维工程师 职责描述&#xff1a; 1、负责公司云上云下所有服务器的日常运维工作&#xff0c;包括应用部署、巡检、备份、日志、监控&#xff0c;故障处理&#xff0c;性能优化等&#xff0c;保障公司相关系统稳定运行。 2、为开发、测…

MyBatisPlus学习笔记三-核心功能

接上篇&#xff1a; MyBatisPlus学习笔记二-CSDN博客 1、核心功能-IService开发基础业务接口 1.1、介绍 1.2、引用依赖 1.3、配置文件 1.4、用例-新增 1.5、用例-删除 1.6、用例-根据id查询 1.7、用例-根据ids查询 2、核心功能-IService开发复杂业务接口 2.1、实例-更新 3、…