动态规划练习题④
583. 两个字符串的删除操作
给定两个单词 word1
和 word2
,返回使得 word1
和 word2
相同所需的最小步数。
每步 可以删除任意一个字符串中的一个字符。
示例 1:
输入: word1 = "sea", word2 = "eat"
输出: 2
解释: 第一步将 "sea" 变为 "ea" ,第二步将 "eat "变为 "ea"
示例 2:
输入:word1 = "leetcode", word2 = "etco"
输出:4
class Solution:def minDistance(self, word1: str, word2: str) -> int:"""# 1.递归def dfs(i, j):if i < 0:return j + 1if j < 0:return i + 1if word1[i] == word2[j]:return dfs(i - 1, j - 1)return min(dfs(i, j - 1), dfs(i - 1, j)) + 1return dfs(len(word1) - 1, len(word2) - 1)""""""# 2.记忆化搜索cache = [[-1 for _ in range(len(word2))] for _ in range(len(word1))]def dfs(i, j):if i < 0:return j + 1if j < 0:return i + 1if cache[i][j] != -1:return cache[i][j]if word1[i] == word2[j]:res = dfs(i - 1, j - 1)cache[i][j] = resreturn resres = min(dfs(i, j - 1), dfs(i - 1, j)) + 1cache[i][j] = resreturn resreturn dfs(len(word1) - 1, len(word2) - 1)"""# 3.递推dp = [[0 for _ in range(len(word2) + 1)] for _ in range(len(word1) + 1)]dp[0] = [i for i in range(len(word2) + 1)]for i, x in enumerate(word1):dp[i + 1][0] = i + 1for j, y in enumerate(word2):if x == y:dp[i + 1][j + 1] = dp[i][j]else:dp[i + 1][j + 1] = min(dp[i + 1][j], dp[i][j + 1]) + 1return dp[-1][-1]
712. 两个字符串的最小ASCII删除和
给定两个字符串s1
和 s2
,返回 使两个字符串相等所需删除字符的 ASCII 值的最小和 。
示例 1:
输入: s1 = "sea", s2 = "eat"
输出: 231
解释: 在 "sea" 中删除 "s" 并将 "s" 的值(115)加入总和。
在 "eat" 中删除 "t" 并将 116 加入总和。
结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。
示例 2:
输入: s1 = "delete", s2 = "leet"
输出: 403
解释: 在 "delete" 中删除 "dee" 字符串变成 "let",
将 100[d]+101[e]+101[e] 加入总和。在 "leet" 中删除 "e" 将 101[e] 加入总和。
结束时,两个字符串都等于 "let",结果即为 100+101+101+101 = 403 。
如果改为将两个字符串转换为 "lee" 或 "eet",我们会得到 433 或 417 的结果,比答案更大。
class Solution:def minimumDeleteSum(self, s1: str, s2: str) -> int:"""# 1.递归def dfs(i, j):if i < 0:return sum([ord(s2[x]) for x in range(j+1)])if j < 0:return sum([ord(s1[x]) for x in range(i+1)])if s1[i] == s2[j]:return dfs(i - 1, j - 1)return min(dfs(i - 1, j) + ord(s1[i]), dfs(i, j - 1) + ord(s2[j]))return dfs(len(s1) - 1, len(s2) - 1)""""""# 2.记忆化搜索cache = [[-1 for _ in range(len(s2))] for _ in range(len(s1))]def dfs(i, j):if i < 0:return sum([ord(s2[x]) for x in range(j + 1)])if j < 0:return sum([ord(s1[x]) for x in range(i + 1)])if cache[i][j] != -1:return cache[i][j]if s1[i] == s2[j]:res = dfs(i - 1, j - 1)cache[i][j] = resreturn resres = min(dfs(i - 1, j) + ord(s1[i]), dfs(i, j - 1) + ord(s2[j]))cache[i][j] = resreturn resreturn dfs(len(s1) - 1, len(s2) - 1)"""# 3.递推dp = [[0 for _ in range(len(s2) + 1)] for _ in range(len(s1) + 1)]for i in range(1, len(s2) + 1): # 当s1为空字符串时,删除s2所需要的值dp[0][i] = dp[0][i - 1] + ord(s2[i - 1])for i, x in enumerate(s1):dp[i + 1][0] = dp[i][0] + ord(s1[i]) # s2为空字符串时,删除s1所需要的值for j, y in enumerate(s2):if x == y:dp[i + 1][j + 1] = dp[i][j]else:dp[i + 1][j + 1] = min(dp[i][j + 1] + ord(x), dp[i + 1][j] + ord(y))return dp[-1][-1]
97. 交错字符串
给定三个字符串 s1
、s2
、s3
,请你帮忙验证 s3
是否是由 s1
和 s2
交错 组成的。
两个字符串 s
和 t
交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 :
s = s1 + s2 + ... + sn
t = t1 + t2 + ... + tm
|n - m| <= 1
- 交错 是
s1 + t1 + s2 + t2 + s3 + t3 + ...
或者t1 + s1 + t2 + s2 + t3 + s3 + ...
注意:a + b
意味着字符串 a
和 b
连接。
示例 1:
输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
输出:true
示例 2:
输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
输出:false
示例 3:
输入:s1 = "", s2 = "", s3 = ""
输出:true
class Solution:def isInterleave(self, s1: str, s2: str, s3: str) -> bool:if len(s1) + len(s2) != len(s3):return False# 如果s1的最后一个字符下标为i,s2的最后一个字符下标为j,那么s3的最后一个字符下标为i+j+1# 如果s3的最后一个字符是s1的最后一个字符或者是s2的最后一个字符,问题就变成s1[i-1],s2[j]或s1[i],s2[j-1] 与s3[i+j]的子问题"""# 1.递归def dfs(i, j):if i == -1 and j == -1:return Trueif i < 0:return s2[: j + 1] == s3[: j + 1]if j < 0:return s1[: i + 1] == s3[: i + 1]return s3[i + j + 1] == s1[i] and dfs(i - 1, j) or s3[i + j + 1] == s2[j] and dfs(i, j - 1)return dfs(len(s1) - 1, len(s2) - 1)""""""# 2.记忆化搜索cache = [[-1 for _ in range(len(s2))] for _ in range(len(s1))]def dfs(i, j):if i == -1 and j == -1:return Trueif i < 0:return s2[: j + 1] == s3[: j + 1]if j < 0:return s1[: i + 1] == s3[: i + 1]if cache[i][j] != -1:return cache[i][j]res = s3[i + j + 1] == s1[i] and dfs(i - 1, j) or s3[i + j + 1] == s2[j] and dfs(i, j - 1)cache[i][j] = resreturn resreturn dfs(len(s1) - 1, len(s2) - 1)"""# 3.递推dp = [[0 for _ in range(len(s2) + 1)] for _ in range(len(s1) + 1)]dp[0][0] = Truefor i in range(1, len(s2) + 1):dp[0][i] = s2[:i] == s3[:i]for i, x in enumerate(s1):dp[i + 1][0] = s1[: i + 1] == s3[: i + 1]for j, y in enumerate(s2):dp[i + 1][j + 1] = (s3[i + j + 1] == s1[i]and dp[i][j + 1]or s3[i + j + 1] == s2[j]and dp[i + 1][j])return dp[-1][-1]
1458. 两个子序列的最大点积
给你两个数组 nums1
和 nums2
。
请你返回 nums1
和 nums2
中两个长度相同的 非空 子序列的最大点积。
数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。比方说,[2,3,5]
是 [1,2,3,4,5]
的一个子序列而 [1,5,3]
不是。
示例 1:
输入:nums1 = [2,1,-2,5], nums2 = [3,0,-6]
输出:18
解释:从 nums1 中得到子序列 [2,-2] ,从 nums2 中得到子序列 [3,-6] 。
它们的点积为 (2*3 + (-2)*(-6)) = 18 。
示例 2:
输入:nums1 = [3,-2], nums2 = [2,-6,7]
输出:21
解释:从 nums1 中得到子序列 [3] ,从 nums2 中得到子序列 [7] 。
它们的点积为 (3*7) = 21 。
示例 3:
输入:nums1 = [-1,-1], nums2 = [1,1]
输出:-1
解释:从 nums1 中得到子序列 [-1] ,从 nums2 中得到子序列 [1] 。
它们的点积为 -1 。
class Solution:def maxDotProduct(self, nums1: List[int], nums2: List[int]) -> int:"""# 1.递归def dfs(i, j):if i < 0 or j < 0:# 返回负无穷大而不是0,因为数组中的点积相乘有可能有负数,这时候应该返回的是负数,而不是0return -infreturn max(nums1[i] * nums2[j], # 选择当前元素,前面的都舍弃,因为前面的结果有可能是负数nums1[i] * nums2[j] + dfs(i - 1, j - 1), # 选择当前元素加上前面的结果dfs(i - 1, j),dfs(i, j - 1),)return dfs(len(nums1) - 1, len(nums2) - 1)""""""# 2.记忆化搜索cache = [[-100001 for _ in range(len(nums2))] for _ in range(len(nums1))]def dfs(i, j):if i < 0 or j < 0:return -infif cache[i][j] != -100001:return cache[i][j]res = max(nums1[i] * nums2[j],nums1[i] * nums2[j] + dfs(i - 1, j - 1),dfs(i - 1, j),dfs(i, j - 1),)cache[i][j] = resreturn resreturn dfs(len(nums1) - 1, len(nums2) - 1)"""# 3.递推dp = [[float("-inf") for _ in range(len(nums2) + 1)] for _ in range(len(nums1) + 1)]for i, x in enumerate(nums1):for j, y in enumerate(nums2):dp[i + 1][j + 1] = max(x * y, x * y + dp[i][j], dp[i][j + 1], dp[i + 1][j])return dp[-1][-1]
1092. 最短公共超序列
给你两个字符串 str1
和 str2
,返回同时以 str1
和 str2
作为 子序列 的最短字符串。如果答案不止一个,则可以返回满足条件的 任意一个 答案。
如果从字符串 t
中删除一些字符(也可能不删除),可以得到字符串 s
,那么 s
就是 t 的一个子序列。
示例 1:
输入:str1 = "abac", str2 = "cab"
输出:"cabac"
解释:
str1 = "abac" 是 "cabac" 的一个子串,因为我们可以删去 "cabac" 的第一个 "c"得到 "abac"。
str2 = "cab" 是 "cabac" 的一个子串,因为我们可以删去 "cabac" 末尾的 "ac" 得到 "cab"。
最终我们给出的答案是满足上述属性的最短字符串。
示例 2:
输入:str1 = "aaaaaaaa", str2 = "aaaaaaaa"
输出:"aaaaaaaa"
class Solution:def shortestCommonSupersequence(self, str1: str, str2: str) -> str:# 观察示例1,结果字符串的最后一个字符是str1的最后一个字符,删除结果字符串和str1的最后一个字符# 此时结果字符串的最后一个字符是str1的最后一个字符,依旧删除# 现在结果字符串的最后一个字符与str1与str2的最后一个字符都相同,三个字符串一起删除最后一个字符# 将结果字符串和str1的最后一个相同字符删除# 此时str1为空,将剩余的str2加入结果字符串"""# 1.递归def dfs(i, j):if i < 0:return str2[: j + 1]if j < 0:return str1[: i + 1]if str1[i] == str2[j]:return dfs(i - 1, j - 1) + str1[i]else:if len(dfs(i - 1, j)) < len(dfs(i, j - 1)):return dfs(i - 1, j) + str1[i]else:return dfs(i, j - 1) + str2[j]return dfs(len(str1) - 1, len(str2) - 1)""""""# 2.记忆化搜索cache = [[-1 for _ in range(len(str2))] for _ in range(len(str1))]def dfs(i, j):if i < 0:return str2[: j + 1]if j < 0:return str1[: i + 1]if cache[i][j] != -1:return cache[i][j]if str1[i] == str2[j]:res = dfs(i - 1, j - 1) + str1[i]cache[i][j] = resreturn reselse:res = dfs(i - 1, j) + str1[i] if len(dfs(i - 1, j)) < len(dfs(i, j - 1)) else dfs(i, j - 1) + str2[j]cache[i][j] = resreturn resreturn dfs(len(str1) - 1, len(str2) - 1)"""# 3.递推dp = [[0 for _ in range(len(str2) + 1)] for _ in range(len(str1) + 1)]dp[0] = [str2[:i] for i in range(len(str2) + 1)]for i, x in enumerate(str1):dp[i + 1][0] = str1[: i + 1]for j, y in enumerate(str2):if x == y:dp[i + 1][j + 1] = dp[i][j] + str1[i]else:if len(dp[i + 1][j]) > len(dp[i][j + 1]):dp[i + 1][j + 1] = dp[i][j + 1] + str1[i]else:dp[i + 1][j + 1] = dp[i + 1][j] + str2[j]return dp[-1][-1]
相关文章:
动态规划练习题④
583. 两个字符串的删除操作 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1: 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 &quo…...
多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测
多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测 目录 多输入多输出 | Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现BO-GRU贝叶斯优化门控循环单元多输入多输出预测&#…...
爬虫工程师的社会现状
现在网上你只要搜索教程就是韦世东;k哥爬虫教你爬虫方面的逆向知识;然后看着这些逆向js百例;搞得我很尴尬我做了这么多年的爬虫工程师;现在算什么;这些逆向的东西我并没有很深层次的了解;但是工作的内容也依旧解决了;并没有到爬虫工程师非要会那么多逆向才能算的上是合格的爬虫…...
Flink 1.20 Kafka Connector:新旧 API 深度解析与迁移指南
Flink Kafka Connector 新旧 API 深度解析与迁移指南 一、Flink Kafka Connector 演进背景 Apache Flink 作为实时计算领域的标杆框架,其 Kafka 连接器的迭代始终围绕性能优化、语义增强和API 统一展开。Flink 1.20 版本将彻底弃用基于 FlinkKafkaConsumer/FlinkK…...
Vue2 父子组件数据传递与调用:从 ref 到 $emit
提示:https://github.com/jeecgboot/jeecgboot-vue2 文章目录 案例父组件向子组件传递数据的方式父组件调用子组件方法的方式子组件向父组件传递数据的方式流程示意图 案例 提示:以下是本篇文章正文内容,下面案例可供参考 以下是 整合后的关…...
【matplotlib参数调整】
1. 基本绘图函数常用参数 折线图 import matplotlib.pyplot as plt import numpy as npx np.linspace(0, 10, 100) y np.sin(x)plt.plot(x, y, colorred, linestyle--, linewidth2,markero, markersize5, labelsin(x), alpha0.8) plt.title(折线图示例) plt.xlabel(X 轴) p…...
如何使用 IntelliJ IDEA 开发命令行程序(或 Swing 程序)并手动管理依赖(不使用 pom.xml)
以下是详细步骤: 1. 创建项目 1.1 打开 IntelliJ IDEA。 1.2 在启动界面,点击 Create New Project(创建新项目)。 1.3 选择 Java,然后点击 Next。 1.4 确保 Project SDK 选择了正确的 JDK 版本&#x…...
Linux红帽:RHCSA认证知识讲解(十 一)配置NTP 时间同步、用户密码策略与使用 autofs 实现 NFS 自动挂载
Linux红帽:RHCSA认证知识讲解(十 一)配置NTP 时间同步、用户密码策略与 NFS 自动挂载 前言一、配置 NTP 时间同步1.1 NTP 简介1.2 安装和配置 NTP 客户端 二、配置新建用户密码过期时间2.1 查看用户密码过期时间2.2 修改密码过期时间 三、使用…...
ffmpeg音视频处理流程
文章目录 FFmpeg 音视频处理流程详细讲解总结音视频处理流程相关的 FFmpeg 工具和命令 FFmpeg 的音视频处理流程涵盖了从输入文件读取数据、编码和解码操作、数据处理、以及最终输出数据的完整过程。为了更好地理解这一流程,我们可以从以下几个关键步骤来分析&#…...
leetcode-代码随想录-链表-移除链表元素
题目 链接:203. 移除链表元素 - 力扣(LeetCode) 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 输入:head [1,2,6,3,4,5,6], val 6 …...
c++与rust的语言区别,rust的主要难点,并举一些例子
C 和 Rust 都是系统级编程语言,它们在设计目标、语法、内存管理等方面存在诸多区别,以下为你详细介绍: 设计目标 C:C 最初是为了给 C 语言添加面向对象编程特性而设计的,之后不断发展,旨在提供高性能、灵…...
从基础算力协作到超智融合,超算互联网助力大语言模型研习
一、背景 大语言模型(LLMs)的快速发展释放出了AI应用领域的巨大潜力。同时,大语言模型作为 AI领域的新兴且关键的技术进展,为 AI 带来了全新的发展方向和应用场景,给 AI 注入了新潜力,这体现在大语言模型独…...
【spring cloud Netflix】Eureka注册中心
1.概念 Eureka就好比是滴滴,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的 需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。同时,服务提供方与Eureka之间通过“心跳” 机制进行监控…...
记录学习的第二十天
今天只做了一道题,有点不在状态。 这道题其实跟昨天的每日一题是差不多的,不过这道题需要进行优化。 根据i小于j,且j小于k,当nums[j]确定时,保证另外两个最大即可得答案。 所以可以使用前缀最大值和后缀最大值。 代…...
7-5 表格输出
作者 乔林 单位 清华大学 本题要求编写程序,按照规定格式输出表格。 输入格式: 本题目没有输入。 输出格式: 要求严格按照给出的格式输出下列表格: ------------------------------------ Province Area(km2) Pop.(…...
【爬虫开发】爬虫开发从0到1全知识教程第14篇:scrapy爬虫框架,介绍【附代码文档】
本教程的知识点为:爬虫概要 爬虫基础 爬虫概述 知识点: 1. 爬虫的概念 requests模块 requests模块 知识点: 1. requests模块介绍 1.1 requests模块的作用: 数据提取概要 数据提取概述 知识点 1. 响应内容的分类 知识点:…...
安装 Microsoft Visual C++ Build Tools
Microsoft Visual C Build Tools下载安装 安装Microsoft Visual C Build Tools是为了在windows系统上编译和运行需要C支持的程序或库(例如某些Python包,Node.js模块等)。 1.下载 打开浏览器,访问 Visual Studio Build Tools下载…...
启服云专利管理系统:铸就知识产权保护的坚固壁垒
在全球竞争日益激烈的今天,知识产权已经成为企业核心竞争力的关键组成部分,而专利作为知识产权的重要体现,其管理和保护显得尤为重要。启服云专利管理系统凭借其卓越的功能和先进的技术,在知识产权保护领域展现出了显著的优势。 高…...
树莓派 5 部署 OMV(OpenMediaVault)
我使用Raspberry Pi OS Lite【Debian version: 12 (bookworm)】搭建OMV 换源,换源教程请参考:树莓派 5 换源 加入omv国内清华源 # 创建openmediavault.list文件 touch /etc/apt/sources.list.d/openmediavault.list # 加入内容 echo "deb [signed…...
Opencv之dilib库:表情识别
一、简介 在计算机视觉领域,表情识别是一个既有趣又具有挑战性的任务。它在人机交互、情感分析、安防监控等众多领域都有着广泛的应用前景。本文将详细介绍如何使用 Python 中的 OpenCV 库和 Dlib 库来实现一个简单的实时表情识别系统。 二、实现原理 表情识别系统…...
吾爱置顶软件,吊打电脑自带功能!
今天我给大家带来一款超棒的软件,它来自吾爱论坛的精选推荐,每一款都经过精心挑选,绝对好用! S_Clock 桌面计时软件 这款软件的界面设计特别漂亮,简洁又大方。它是一款功能齐全的时钟计时倒计时软件,既能正…...
深入理解浏览器的事件循环
浏览器的进程模型 浏览器进程:负责子进程的管理和用户交互网络进程:负责加载网络资源渲染进程:浏览器会为每一个标签页开启一个新的渲染进程。 渲染进程中的渲染主线程是我们最关注的,因为浏览器的事件循环就发生在这之中渲染主进…...
分布式锁之redis6
一、分布式锁介绍 之前我们都是使用本地锁(synchronize、lock等)来避免共享资源并发操作导致数据问题,这种是锁在当前进程内。 那么在集群部署下,对于多个节点,我们要使用分布式锁来避免共享资源并发操作导致数据问题…...
数据框的添加
在地图制图中,地图全图显示的同时希望也能够显示局部放大图,以方便查看地物空间位置的同时,也能查看地物具体的相对位置。例如,在一个名为airport的数据集全图制图过程中,希望能附上机场区域范围的局部地图,…...
SQL Server 2022 读写分离问题整合
跟着热点整理一下遇到过的SQL Server的问题,这篇来聊聊读写分离遇到的和听说过的问题。 一、读写分离实现方法 1. 原生高可用方案 1.1 Always On 可用性组(推荐方案) 配置步骤: -- 1. 启用Always On功能 USE [master] GO ALT…...
启服云云端专利管理系统:解锁专利管理新境界
在当今竞争激烈的商业环境中,专利作为企业的核心资产,其管理的重要性不言而喻。启服云云端专利管理系统以其卓越的性能和独特的优势,成为企业专利管理的得力助手,为企业的创新发展保驾护航。 便捷高效,突破时空限制 启…...
记录一下零零散散的的东西-ImageNet
ImageNet 是一个非常著名的大型图像识别数据集, 数据集基本信息 内容说明📸 图像数量超过 1400万张图片(包含各类子集)🏷️ 类别数量常用的是 ImageNet-1K(1000类)🧑Ἶ…...
全连接RNN反向传播梯度计算
全连接RNN反向传播梯度计算 RNN数学表达式BPTT(随时间的反向传播算法)参数关系网络图L对V的梯度L对U的梯度L对W和b的梯度 RNN数学表达式 BPTT(随时间的反向传播算法) 参数关系网络图 L对V的梯度 L对U的梯度 L对W和b的梯度...
基于BusyBox构建ISO镜像
1. 准备 CentOS 7.9 3.10.0-957.el7.x86_64VMware Workstation 建议:系统内核<3.10.0 使用busybox < 1.33.2版本 2. 安装busybox # 安装依赖 yum install syslinux xorriso kernel-devel kernel-headers glibc-static ncurses-devel -y# 下载 wget https://…...
使用python完成手写数字识别
入门图像识别的第一个案例,看到好多小伙伴分享,也把自己当初的思路捋捋,写成一篇博客,作为记录和分享,也欢迎各位交流讨论。 实现思路 数据集:MNIST(包含60,000个训练样本和10,000个测试样本) 深度学习框架:Keras(基于TensorFlow) 模型架构:卷积神经网络(CNN) 实…...
Vue2 过滤器 Filters
提示:Vue 过滤器是用于格式化文本的 JavaScript 函数,通过管道符 | 在模板中使用 文章目录 前言过滤器的核心特性1. 链式调用2. 参数传递3. 纯函数特性 过滤器的常见使用场景1. 文本格式化2. 数字处理3. 日期/时间格式化4. 样式控制(结合组件…...
Java 大视界 -- 基于 Java 的大数据分布式存储在视频监控数据管理中的应用优化(170)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
c++中cin.ignore()的作用
在 C 中,cin.ignore() 是用于忽略(丢弃)输入流中的字符的函数,通常用来清除输入缓冲区中的残留内容(如换行符、多余输入等),以避免影响后续的输入操作。 基本用法 cin.ignore(n, delim);n&…...
讲一下resblock的跳跃连接,以及连接前后的shape保持(通过padding保持shape不变)
ResNet 残差块(ResBlock)的跳跃连接 & 形状保持 ResNet(Residual Network)通过 残差块(Residual Block, ResBlock) 解决了深度网络的梯度消失问题。其核心是跳跃连接(Skip Connection&…...
Unity中优化绘制调用整理
DrawCall 指的是 CPU 向 GPU 发送渲染指令的过程,在 Unity 中,每次渲染一个网格时,CPU 都需要向 GPU 发送一系列的渲染指令,这个过程被称为一次绘制调用(Draw Call)。 1.GPU实例化 使用: 2.绘…...
Coco-AI 支持嵌入,让你的网站拥有 AI 搜索力
在之前的实践中,我们已经成功地把 Hexo、Hugo 等静态博客和 Coco-AI 检索系统打通了:只要完成向量化索引,就可以通过客户端问答界面实现基于内容的智能检索。 这一层已经很好用了,但总觉得少了点什么—— 比如用户还得专门打开一…...
深入解析Java哈希表:从理论到实践
哈希表(Hash Table)是计算机科学中最重要的数据结构之一,也是Java集合框架的核心组件。本文将以HashMap为切入点,深入剖析Java哈希表的实现原理、使用技巧和底层机制。 一、哈希表基础原理 1. 核心概念 键值对存储:通…...
leetcode76.最小覆盖子串
思路源于 【小白都能听懂的算法课】【力扣】【LeetCode 76】最小覆盖子串|滑动窗口|字符串 初始化先创建t的哈希表记录t中的字符以及它出现的次数,t的have记录t中有几种字符 s的哈希表记录窗口中涵盖t的字符以及它出现的次数,初始…...
【HTB】Windwos-easy-Legacy靶机渗透
靶机介绍,一台很简单的WIndows靶机入门 知识点 msfconsole利用 SMB历史漏洞利用 WIndows命令使用,type查看命令 目录标题 一、信息收集二、边界突破三、权限提升 一、信息收集 靶机ip:10.10.10.4攻击机ip:10.10.16.26 扫描TC…...
一问讲透redis持久化机制-rdb aof
一问讲透redis持久化机制-rdb aof 文章目录 一问讲透redis持久化机制-rdb aof前言一、RDB二、AOF二、原理 前言 提示:这里可以添加本文要记录的大概内容: redis作为内存数据库,常常作为系统的缓存使用,但是内存是断电清空数据的…...
【大模型基础_毛玉仁】6.4 生成增强
目录 6.4 生成增强6.4.1 何时增强1)外部观测法2)内部观测法 6.4.2 何处增强6.4.3 多次增强6.4.4 降本增效1)去除冗余文本2)复用计算结果 6.4 生成增强 检索器得到相关信息后,将其传递给大语言模型以期增强模型的生成能…...
4.1-泛型编程深入指南
4.1 泛型编程深入指南 本节将带您深入探索C#泛型机制在游戏开发中的高级应用。通过游戏对象池、数据管理器、事件系统等实际案例,您将学习如何运用泛型构建高效、灵活的游戏系统。掌握这些知识将帮助您开发出性能更好、架构更清晰的游戏。 前置知识 在学习本节内容…...
《K230 从熟悉到...》识别机器码(AprilTag)
《K230 从熟悉到...》识别机器码(aprirltag) tag id 《庐山派 K230 从熟悉到...》 识别机器码(AprilTag) AprilTag是一种基于二维码的视觉标记系统,最早是由麻省理工学院(MIT)在2008年开发的。A…...
操作系统(二):实时系统介绍与实例分析
目录 一.概念 1.1 分类 1.2 主要指标 二.实现原理 三.主流实时系统对比 一.概念 实时系统(Real-Time System, RTS)是一类以时间确定性为核心目标的计算机系统,其设计需确保在严格的时间约束内完成任务响应。 1.1 分类 根据时间约束的严…...
虚拟电商-话费充值业务(六)话费充值业务回调补偿
一、话费充值回调业务补偿 业务需求:供应商对接下单成功后充吧系统将订单状态更改为:等待确认中,此时等待供应商系统进行回调,当供应商系统回调时说明供应商充值成功,供应商回调充吧系统将充吧的订单改为充值成功&…...
加密解密工具箱 - 专业的在线加密解密工具
加密解密工具箱 - 专业的在线加密解密工具 您可以通过以下地址访问该工具: https://toolxq.com/static/hub/secret/index.html 工具简介 加密解密工具箱是一个功能强大的在线加密解密工具,支持多种主流加密算法,包括 Base64、AES、RSA、DES…...
印度股票实时数据API接口选型指南:iTick.org如何成为开发者优选
在全球金融数字化浪潮中,印度股票市场因其高速增长潜力备受关注。对于量化交易开发者、金融科技公司而言,稳定可靠的股票报价API接口是获取市场数据的核心基础设施。本文将深度对比主流印度股票API,并揭示iTick在数据服务领域的独特优势。 一…...
使用python实现视频播放器(支持拖动播放位置跳转)
使用python实现视频播放器(支持拖动播放位置跳转) Python实现视频播放器,在我早期的博文中介绍或作为资料记录过 Python实现视频播放器 https://blog.csdn.net/cnds123/article/details/145926189 Python实现本地视频/音频播放器https://bl…...
Python星球日记 - 第2天:数据类型与变量
🌟引言: 上一篇:Python星球日记 - 第1天:欢迎来到Python星球 名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和…...
CyclicBarrier、Semaphore、CountDownLatch的区别,适用场景
CyclicBarrier、Semaphore 和 CountDownLatch 是 Java 并发包中用于线程协作的工具类,它们虽然都与线程同步相关,但设计目的和使用场景有显著差异。以下是它们的核心区别和典型应用场景: 1. CountDownLatch 核心机制 一次性计数器…...