动态规划——背包问题
1、完全平方数Q给你一个整数n返回和为n的完全平方数的最少数量。完全平方数是一个整数其值等于另一个整数的平方换句话说其值等于一个整数自乘的积。例如1、4、9和16都是完全平方数而3和11不是。A 1、初始化为了得到最少数量并且保证在更新时不会被初始数值影响初始化全局为max同时为了保证可以正常开始00要重新赋值为02、更新时将本体看作要将目标值n拆解为多个完全平方数之和可以想象成我们要找到一个数组数组之和为n如果当前遍历的整数j小于对应位置的完全平方数则该位置的完全平方数无法作为该数组的元素反之则可以加入但是我们要对比加入该元素之后和不加入时哪个方案的元素数更少因为即使和相同可选择的完全平方数也有多种方案我们要找到最小的那一个。3、遍历边界对于x维度的遍历很好理解我们需要从[1m]中选择任意个对于y维度可能出现的和的区间为[0,n]刚开始没有任何元素加入时为0。4、二维空间中记录的是对应组合下最少的完全平方数class Solution { public int numSquares(int n) { int m (int) Math.sqrt(n); int[][] dp new int[m 1][n 1]; // 初始化 for(int[] r : dp) Arrays.fill(r, Integer.MAX_VALUE / 2); dp[0][0] 0; for(int i 1; i m; i){ for(int j 0; j n; j){ if(j i * i){ dp[i][j] dp[i - 1][j]; }else{ dp[i][j] Math.min(dp[i - 1][j], dp[i][j - i * i] 1); } } } return dp[m][n]; } }2、零钱兑换518Q给你一个整数数组coins表示不同面额的硬币另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额返回0。假设每一种面额的硬币有无限个。A1、其实核心思路和完全平方数是一样的只不过把if的判断条件和每次减去的值换为了coins的元素2、区别在于这次要求的是可能出现的组合数所以在初始化时要将dp[0][0]目标值为0coins.length 0)的情况初始化为13、二维空间中记录的是对应组合下总的组合数class Solution { public int coinChange(int[] coins, int amount) { int n coins.length; int[][] dp new int[n 1][amount 1]; for(int[] r : dp) Arrays.fill(r, Integer.MAX_VALUE / 2); dp[0][0] 0; for(int i 0; i n; i){ for(int j 0; j amount; j){ if(j coins[i]) dp[i 1][j] dp[i][j]; else dp[i 1][j] Math.min(dp[i 1][j - coins[i]] 1, dp[i][j]); } } return dp[n][amount] Integer.MAX_VALUE / 2 ? -1 : dp[n][amount]; } }3、组合总数377Q给你一个由不同整数组成的数组nums和一个目标整数target。请你从nums中找出并返回总和为target的元素组合的个数。顺序不同的序列被视作不同的组合。A1、初始化总和0任意前j个数字都有1种方案空序列2、根据标红部分要求要考虑顺序问题所以要先遍历target再遍历nums【先遍历 target总和 i、内层遍历 nums 数字是为了统计有序排列题目 377 要求[1,2]和[2,1]算两种不同方案 如果反过来先遍历物品再遍历金额只能统计无序组合】3、dp[i-num][n]取全部数字能凑出i-num的所有有序排列保证num可以拼接在任何顺序的序列末尾以此区分[1,2]和[2,1] 如果写成dp[i-num][j]只能用前j个数字会丢失排列、变成无序组合4、if分支区别于以上问题需要先赋给当前位置一个初始的组合上一个遍历结果之后再判断这个新的元素能不能放进去【错误做法】if(nums[j] i){ dp[i][j 1] dp[i][j]; }else{ dp[i][j 1] dp[i - nums[j]][n]; }这样会造成如果可以选当前元素会在初始为0的基础上加上这个元素这里是错的如果不选会继承上一个结果。class Solution { public int combinationSum4(int[] nums, int target) { int n nums.length; int[][] dp new int[target 1][n 1]; // 总和0任意前j个数字都有1种方案空序列 for(int i 0; i n;i) dp[0][i] 1; for(int i 0; i target; i){ for(int j 0; j n; j){ dp[i][j 1] dp[i][j]; if(nums[j] i){ dp[i][j 1] dp[i - nums[j]][n]; } } } return dp[target][n]; } }4、1和0Q给你一个二进制字符串数组strs和两个整数m和n。请你找出并返回strs的最大子集的长度该子集中最多有m个0和n个1。如果x的所有元素也是y的元素集合x是集合y的子集。A1、有三个维度字符串长度、0的个数、1的个数初始化时可以史记为三维或者二维个人倾向于二维优化一个维度空间会更好理解在这里显然是优化字符串2、统计遍历到的每隔字符串的0、1含量并将其作为m、n的下限继续下面的遍历如果不符合也就不必继续了如果符合且选择要加入这个字符串就将对应位置1并更新当前位置最大子集长度。class Solution { public int findMaxForm(String[] strs, int m, int n) { int[][] dp new int[m 1][n 1]; for(String s : strs){ char[] ch s.toCharArray(); int cntm 0; int cntn 0; for(char c : ch){ if(c 0) cntm; else cntn; } for(int j m; j cntm; j--){ for(int k n; k cntn; k--){ dp[j][k] Math.max(dp[j][k], dp[j - cntm][k - cntn] 1); } } } return dp[m][n]; } }

相关新闻

使用OpenClaw+Skill自动发布微信公众号文章:把settings改到TaoToken的完整配置

使用OpenClaw+Skill自动发布微信公众号文章:把settings改到TaoToken的完整配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 2:18:30 阅读更多 →
ESP32零基础入门:GY-30光照传感器实战指南

ESP32零基础入门:GY-30光照传感器实战指南

1. 为什么选GY-30(BH1750)作为ESP32入门传感器的第一课?你刚拆开ESP32开发板,手边只有一块面包板、几根杜邦线,还有一堆没拆封的传感器模块——这时候该从哪下手?不是DHT22温湿度,也不是MPU6050…

2026/10/9 2:18:30 阅读更多 →
HNSW 索引构建源码走读:分层建立过程中的概率跃迁与随机层数生成算法

HNSW 索引构建源码走读:分层建立过程中的概率跃迁与随机层数生成算法

在海量高维向量检索系统(ANN Search)落地实践中,HNSW(Hierarchical Navigable Small World)被公认为召回率与检索延迟平衡最佳的图索引结构之一。其核心思想借鉴了传统数据结构中的跳表(SkipList&#xff0…

2026/10/9 2:18:30 阅读更多 →

最新新闻

Python aihems-pkg 包实战案例与常见错误

Python aihems-pkg 包实战案例与常见错误

1. 引言aihems-pkg 是一个面向 Python 开发者的实用工具包,旨在简化 AI 辅助的工程管理、数据清洗与自动化脚本编写流程。它封装了常见的文件处理、配置解析、日志记录和轻量级 AI 接口调用能力,让开发者可以用更少的样板代码完成更多工作。本文将从功能…

2026/10/9 2:50:46 阅读更多 →
【AI大模型】量化加速:不同量化方案的速度与精度对比

【AI大模型】量化加速:不同量化方案的速度与精度对比

【AI大模型】量化加速:不同量化方案的速度与精度对比 核心结论:量化是降低显存、提升推理速度的关键手段,但不同量化方案在速度与精度上取舍不同。主流方案包括:INT8权重量化、INT4权重量化(含GPTQ、AWQ)、动态量化、混合精度(FP8/FP16)等。总体上,量化位数越低,显存…

2026/10/9 2:50:46 阅读更多 →
QCC5229(ADK)耳机提示音(Tones / Prompts)配置与使用深度解析:ringtone_note 编码、双通路播放链与 TWS 双耳同步

QCC5229(ADK)耳机提示音(Tones / Prompts)配置与使用深度解析:ringtone_note 编码、双通路播放链与 TWS 双耳同步

QCC5229(ADK)耳机提示音(Tones / Prompts)配置与使用深度解析:ringtone_note 编码、双通路播放链与 TWS 双耳同步 适用读者:基于高通 ADK(QCC5229 等 earbud 应用工程)进行 TWS 蓝牙耳机开发的嵌入式软件工程师。 分析基线:earbud/src/earbud_tones.c、earbud/src/ear…

2026/10/9 2:50:46 阅读更多 →
【AI大模型】Self-Instruct 技术:让模型自己教自己

【AI大模型】Self-Instruct 技术:让模型自己教自己

【AI大模型】Self-Instruct 技术:让模型自己教自己 写在前面:给模型一本“新教材”让它自学 上一课我们讲了用 GPT-4 这类强模型生成合成数据。这一课的 Self-Instruct(自我指令)是更进一步的思路:不依赖外部强模型,而是让“当前这个模型自己”生成指令和回答,再用这些…

2026/10/9 2:50:46 阅读更多 →
万字深度长文:大模型提示词工程实战——如何将AI从“废话生成器”改造为“申论满分阅卷机”

万字深度长文:大模型提示词工程实战——如何将AI从“废话生成器”改造为“申论满分阅卷机”

关键内容前置: # Role: 资深申论阅卷组长与公文写作专家## Profile: 你深谙中国公务员考试(申论)的“按点给分”规则与公文写作规范。你具备极强的信息提取、归纳概括和逻辑重构能力。你的唯一目标是根据给定材料,输出完全符合阅卷…

2026/10/9 2:50:46 阅读更多 →
Mac 当主机,Linux 当服务器(3)Linux 权限一次讲透,从 Permission denied 到 SSH 密钥登录

Mac 当主机,Linux 当服务器(3)Linux 权限一次讲透,从 Permission denied 到 SSH 密钥登录

摘要:Permission denied 是运维生涯最常见的五个单词。这篇用「给博客建一个专用账号」的真实任务,把 Linux 的用户、组、权限、chmod 数字表示法、sudo 与 su 的区别、SSH 密钥登录与那两个「死规定权限」,一次讲清楚。全是面试高频考点,也是你以后每天都会用到的操作。 承…

2026/10/9 2:49:46 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →