力扣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.mzph.cn/news/631291.shtml

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

相关文章

072:vue+mapbox 点击某图层feature,高亮这部分

第072个 点击查看专栏目录 本示例是介绍如何在vue+mapbox中点击某图层feature,高亮这部分。思路是通过点击,获取点击部分的feature信息,生成一个新的source和layer,如果这个图层不为空,则清除之,相当于点击了别的地方,原有的高亮会删除掉,在别的地方高亮。 直接复制下…

探寻编码时代的潮流旋律

&#x1f6a9;本文介绍 随着技术的不断演进&#xff0c;编程语言作为软件开发的基石也在不断发展。作为一名扎根运维领域的工程师&#xff0c;我深感了解和把握编程语言的新趋势对于个人职业发展至关重要。在这篇博客中&#xff0c;我们将深入探讨当前编程语言领域的最新动态&…

VMware虚拟机自定义网段及物理机ping不通虚拟机问题解决

Vmware网络介绍&#x1f6dc; VMware虚拟机提供了几种网络模式&#xff0c;其中包括桥接模式&#xff08;Bridged Mode&#xff09;、NAT模式&#xff08;Network Address Translation Mode&#xff09;和仅主机模式&#xff08;Host-Only Mode&#xff09;。这些模式允许虚拟…

Android应用开发:基础小游戏开发

手机游戏成为人们日常娱乐的重要组成部分。如果您想踏入这个充满创意和技术挑战的领域&#xff0c;制作一个Android基础小游戏是个不错的开始。以下是从零开始制作Android小游戏的基础指南。 1选择开发环境和工具 Android Studio 是官方推荐的开发环境&#xff0c;它提供了强大…

《2023大数据产业年度创新技术突破》榜重磅发布丨第六届金猿奖

‍ 第六届年度金猿榜单/奖项 “第六届年度金猿季策划活动——2023大数据产业创新技术突破榜单/奖项”由金猿X数据猿X上海大数据联盟共同推出。 大数据产业创新服务媒体 ——聚焦数据 改变商业 第六届 “年度金猿季大型主题策划活动”由金猿、数据猿、上海大数据联盟共同组成的…

【playwright】新一代自动化测试神器playwright+python系列课程18_playwritht元素相关操作_等待元素到某种状态

元素相关操作_等待元素到某种状态 对于自动化测试来说&#xff0c;本质上就是定位元素、操作元素。网页上的元素有不同状态&#xff0c;有些元素本来不在网页的DOM中&#xff0c;经过某一步操作后才出现。有些元素是本来就已经在DOM中但是是隐藏的状态&#xff0c;经过某一步操…

JVM知识总结

1.概述 JVM指的是Java虚拟机&#xff0c;本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件&#xff0c;作用是为了支持跨平台特性。 功能&#xff1a; 装载字节码&#xff0c;解释/编译为机器码 管理数据存储和垃圾回收 优化热点代码提升效率 …

uniapp中uview组件库的NoticeBar 滚动通知 使用方法

目录 #平台差异说明 #基本使用 #配置主题 #配置图标 #配置滚动速度 #控制滚动的开始和暂停 #事件回调 #API #Props #Events 该组件用于滚动通告场景&#xff0c;有多种模式可供选择 #平台差异说明 AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序√√√√…

C++初入(四)

1.万能头文件 #include <bits/stdc.h> 里面包含了大量我们日常所需的头文件&#xff0c;如果使用它&#xff0c;我们就可以减少大量时间去写头文件&#xff0c;但是其实在平常练习和实际运用中&#xff0c;该头文件几乎没有实际价值&#xff0c;原因&#xff1a;1.里面…

web蓝桥杯真题--8、和手机相处的时光

介绍 现在都提倡健康使用手机&#xff0c;那么统计一下在一周中每天使用手机的情况吧&#xff01;本题使用 ECharts 实现统计手机使用时长的折线图&#xff0c;但是代码中存在 Bug 需要你去修复。 准备 开始答题前&#xff0c;需要先打开本题的项目代码文件夹&#xff0c;目…

Windows NT 3.5源代码已编译!

2020年5月&#xff0c;Windows NT 3.5 build 782源代码被泄露。然而&#xff0c;它缺少很多文件&#xff0c;包括编译器、链接器、头文件等。大多数这些工具都可以从 Windows NT 3.5 的 SDK 和 DDK 中应用&#xff08;您也可以临时处理 NT 3.51 的 DDK 文件&#xff0c;但之后根…

【Filament】材质系统

1 前言 本文主要介绍 Filament 的材质系统&#xff0c;官方介绍详见 → Filament Materials Guide。材质系统中会涉及到一些空间和变换的知识点&#xff0c;可以参考&#xff1a;【Unity3D】空间和变换、【Unity3D】Shader常量、变量、结构体、函数、【OpenGL ES】MVP矩阵变换、…

Nsis打包Unity Exe文件(通用)

Nsi 脚本 !include "MUI2.nsh"#使用现代UI Unicode true #使用Unicode !define EXENAME "exeName" #定义常量 exe名称 !define SHORTCUT "快捷方式名称" #定义桌面快捷方式的中文名称Name ${EXENAME} #安装程序的title OutFile "${EXENAME…

react-app框架——使用monaco editor实现online编辑html代码编辑器

文章目录 ⭐前言&#x1f496;react系列文章 ⭐配置monaco-editor&#x1f496;引入react-monaco-editor&#x1f496;引入react-app-rewired&#x1f496;通过config-overrides.js添加monaco插件配置 ⭐编辑代码的react页面配置&#x1f496;扩展 可自定义配置语言 ⭐效果⭐总…

Salesforce生成式AI聊天机器人「Einstein Copilot」,将于2月发布!

Spring 24宣布&#xff0c;期待已久的Einstein Copilot将于2024年2月落地Salesforce。该生成式AI聊天机器人将用于整个Salesforce产品套件&#xff0c;帮助企业做出更明智的决策&#xff0c;从而改善客户体验。 Einstein Copilot应用于CRM应用程序中&#xff0c;智能回应任何用…

.net core 6 使用注解自动注入实例,无需构造注入 autowrite4net

像java使用autowrite一样使用 1、前提先注册到ioc容器当中 builder.Services.AddScoped 2、nuget引入AutoWrite4Net 3、启用 //启用自动注入 app.UseAutoWrite(); 4、在类上使用注解 [StartAutoWrite] public class NacosController : ControllerBase 5、实例上使用注解 …

2.mac 安装 Visual studio code 整合go开发

目录 概述前置下载关键命令整合C#go配置go插件常见的go工具安装测试 结束 概述 mac 安装 Visual studio code 整合go开发 相关前置文章 go安装及相关配置 文章 前置 官网速递 mac 系统高于等于 10.15.x 可以直接最新版本 我的系统是 10.13 &#xff0c;所以只能安装此版本…

Kubernetes网络模型概述

Kubernetes网络模型设计的一个基础原则是&#xff1a;每个Pod都拥有一个独立的IP地址&#xff0c;并假定所有Pod都在一个可以直接连通的、扁平的网络空间中。所以不管这些Pod是否运行在同一个Node中&#xff0c;都要求它们可以直接通过对方的IP进行访问。由于Kubernetes的网络模…

Redis服务端优化(持久化配置、慢查询、命令及安全配置、内存配置)

文章目录 持久化配置慢查询命令及安全配置内存配置 持久化配置 慢查询 命令及安全配置 漏洞&#xff1a;Redis未授权访问配合SSH key文件利用分析-腾讯云开发者社区-腾讯云 (tencent.com) 漏洞出现的核心的原因有以下几点 Redis未设置密码利用了Redis的config set命令动态修…

python数字图像处理基础(五)——Canny边缘检测、图像金字塔、图像分割

目录 Canny边缘检测原理步骤 图像金字塔1.高斯金字塔2.拉普拉斯金字塔 图像分割图像轮廓检测1.检测轮廓2.绘制轮廓3.补充 Canny边缘检测 梯度是什么? 梯度就是变化的最快的那个方向 edge cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]…