- 博客(55)
- 收藏
- 关注
原创 计算机准备
损失函数(代价函数,Loss function or criterion):衡量预测值与实际值的偏差程度。生成模型(GAN/VAE/Diffusion Models)有监督学习、半监督、自监督、无监督的概念和对比。类别不平衡问题如何解决?激活函数工作原理和对比。注意力机制与记忆网络。
2024-03-06 16:00:31 1021
原创 Day52- 单调栈part03
栈中保存的是每个柱子的索引,栈中索引对应的柱子高度是递增的,所以每个柱子的右边界就是其右侧第一个高度不足的位置。同理,柱子的左边界是其左侧第一个高度不足的位置。个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。
2024-02-15 10:27:10 441
原创 Day51- 单调栈part02
这里是建立单调递减的栈,每当遇到一个新的柱子,如果它比堆栈顶的元素小,就把新柱子的索引入栈,如果它跟堆栈顶的元素相等,就替换掉当前堆栈顶的元素。当遍历数组时,如果当前元素大于栈顶索引对应的元素,那么找到了栈顶索引对应元素的“下一个更大元素”,可以持续这样做直到栈为空或者当前元素不再大于栈顶索引对应的元素为止。是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。
2024-02-15 10:19:56 459
原创 Day50- 单调栈part01
如果明天的温度比今天高,那么栈顶的元素就可以出栈。栈内保存的是索引,栈顶的元素是当前未被高温度覆盖的最近的一天。创建一个映射用于存储nums2中每个数的下一个更大元素,然后再用创建的映射查找nums1中元素的下一个更大元素。天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。如果不存在下一个更大元素,那么本次查询的答案是。,表示每天的温度,返回一个数组。
2024-02-14 05:07:12 643
原创 Day48- 动态规划part16
这个问题实际上是求两个字符串的最长公共子序列(LCS)的长度的变种。一旦找到了最长公共子序列的长度,通过删除两个字符串中不在LCS中的所有字符来使它们相同。因此,所需的最小删除步数就是两个字符串的长度之和减去两倍的LCS长度。计算将一个字符串转换为另一个字符串的最少操作数,这些操作包括插入、删除和替换字符。个字符的最长公共子序列的长度。个字符转换到空字符串所需的最少操作数,即。可以删除任意一个字符串中的一个字符。个字符所需的最少操作数,即。个字符所需的最少操作数。所需的最小删除步数为。
2024-02-14 04:19:21 432
原创 Day47- 动态规划part15
如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。出现的个数,结果需要对 109 + 7 取模。对于数组中的每个位置。具体方法是,用两个指针分别遍历字符串。添加此问题并且创建所有测试用例。的指针,同时无论是否找到都要移动。中的一个字符,那么就移动。
2024-02-13 00:21:51 414
原创 Day46- 动态规划part14
给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。定义一个二维数组dp,其中dp[i][j]代表text1中前i个字符与text2中前j个字符的最长公共子序列的长度。对于数组中的每个位置dp[i][j]初始条件是和。
2024-02-12 23:35:13 929
原创 Day45- 动态规划part13
为了找到最长连续递增序列的长度,可以遍历数组,使用一个计数器来跟踪当前连续递增序列的长度,并使用一个变量来记录到目前为止找到的最长连续递增序列的长度。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。数组中的最大值,即为两个数组中公共的、长度最长的子数组的长度。中的最大值即为整个数组的最长递增子序列的长度。,找到其中最长严格递增子序列的长度。给定一个未经排序的整数数组,找到最长且。结尾的最长递增子序列的长度。、长度最长的子数组的长度。结尾的最长公共子数组的长度。
2024-02-12 23:02:18 463
原创 Day44- 动态规划part12
你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。设计一个算法计算出最大利润。这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。代表了交易股票的手续费用。返回获得利润的最大值。
2024-02-12 22:32:24 773
原创 Day43- 动态规划part11
你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)设计一个算法来计算你所能获取的最大利润。设计一个算法来计算你所能获取的最大利润。也就是说,你最多可以买。个元素是一支给定的股票在第。是某支给定的股票在第。给定一个数组,它的第。
2024-02-12 21:44:28 345
原创 Day42- 动态规划part10
并且只要发现第二天的价格比第一天高,就将这个差值加到总利润中。这样,通过累计所有的正差值(即所有上涨的利润),就能得到可能的最大利润。,对于每一个价格,首先计算如果在这一天卖出股票能得到的利润(当前价格减去之前的最低价格)返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。在每一天,你可以决定是否购买和/或出售股票。设计一个算法来计算你所能获取的最大利润。一个是到目前为止所遇到的最低股票价格。另一个是到目前为止能获得的最大利润。你也可以先购买,然后在。买入这只股票,并选择在。
2024-02-11 23:03:29 428
原创 Day41- 动态规划part09
这个辅助函数对于每个节点返回一个大小为2的数组,其中第一个元素表示不偷当前节点能得到的最大金额,第二个元素表示偷当前节点能得到的最大金额。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,
2024-02-11 22:50:35 397
原创 Day40- 动态规划part08
现在有 N 种不同类型的矿石,每种矿石有一个重量 w[i],一个价值 v[i],以及最多 k[i] 个可用。在这个行星上,有许多不同类型的矿石资源,每种矿石都有不同的重要性和价值。你需要选择哪些矿石带回地球,但你的宇航舱有一定的容量限制。输入共包括四行,第一行包含两个整数 C 和 N,分别表示宇航舱的容量和矿石的种类数量。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。第四行包含 N 个整数,表示 N 种矿石的可用数量上限。第二行包含 N 个整数,表示 N 种矿石的重量。
2024-02-11 22:36:07 403
原创 Day39- 动态规划part07
到达第n个台阶的方法数量是到达前面某些台阶的方法数量的总和,具体来说,就是到达第n-1, n-2, ..., n-m个台阶的方法数量的总和,因为每次可以爬1到m个台阶。是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。然后,对于每一个台阶i(从1到n),计算到达这个台阶的方法数,即。的台阶,只能从比i小的台阶爬上来,所以在这种情况下,,因为到达起点(不爬任何台阶)只有一种方法。输出一个整数,表示爬到楼顶的方法数。你可以认为每种硬币的数量是无限的。,可以初始化为一个很大的数,比如。
2024-02-11 22:15:01 868
原创 Day38- 动态规划part06
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的重量,并且具有不同的价值。小明的行李箱所能承担的总重量为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料可以选择无数次,并且可以重复选择。接下来包含 N 行,每行两个整数 wi 和 vi,代表第 i 种研究材料的重量和价值。第一行包含两个整数,N,V,分别表示研究材料的种类和行李空间。表示不同面额的硬币,另给一个整数。
2024-02-11 21:44:55 421
原创 Day37- 动态规划part05
1049. 最后一块石头的重量 II有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。如果x == y,那么两块石头都会被完全粉碎;如果x!= y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回0。
2024-01-27 17:44:44 333
原创 Day36- 动态规划part04
小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。第一行包含两个正整数,第一个整数 M 代表研究材料的种类,第二个正整数 N,代表小明的行李空间。第二行包含 M 个正整数,代表每种研究材料的所占空间。输出一个整数,代表小明能够携带的研究材料的最大价值。
2024-01-27 17:32:57 412
原创 Day34- 动态规划part02
列的位置的不同路径数量。状态转移方程dp[i][j] = dp[i-1][j] + dp[i][j-1]是从上方或左方到达当前位置的路径数量等于从上方到达的路径数量加上从左方到达的路径数量。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。网格的左上角 (起始点在下图中标记为 “Start” )。网格的左上角 (起始点在下图中标记为 “Start” )。表示机器人从起始点到达网格的第。网格中的障碍物和空位置分别用。
2024-01-27 17:09:26 342
原创 Day33- 动态规划part01
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。F(n) = F(n - 1) + F(n - 2),其中 n > 1。开始,后面的每一项数字都是前面两项数字的和。你有多少种不同的方法可以爬到楼顶呢?请你计算并返回达到楼梯顶部的最低花费。表示)形成的序列称为。
2024-01-27 16:54:18 364
原创 Day32- 贪心算法part06
基本思路是从叶子节点开始向上,尽量在每个节点的父节点上安装摄像头,以覆盖尽可能多的节点。这样可以保证使用最少的摄像头覆盖所有节点。的每一位数字,当发现某一位数字大于其后一位数字时,将这一位数字减一,并将所有更低位的数字设置为 9,以确保结果是单调递增的。给定一个二叉树,我们在树的节点上安装摄像头。计算监控树的所有节点所需的最小摄像头数量。当且仅当每个相邻位数上的数字。节点上的每个摄影头都可以监视。的最大数字,且数字呈。时,我们称这个整数是。从高位到低位遍历整数。
2024-01-18 22:05:00 674
原创 Day31- 贪心算法part05
然后遍历每个区间,如果当前区间的起始位置大于已合并区间集合中最后一个区间的结束位置,则说明当前区间与已合并区间集合中的区间不重叠,可以直接添加到已合并区间集合中。如果有重叠,则将已合并区间集合中最后一个区间的结束位置更新为当前区间的结束位置和已合并区间集合中最后一个区间的结束位置中的较大值。具体做法是先根据每个区间的结束时间进行排序,然后遍历这些区间,每次选择结束时间最早且与前一个选中的区间不重叠的区间。基本思路是先根据区间的起始位置进行排序,然后遍历排序后的区间列表,合并所有重叠的区间。
2024-01-18 21:56:54 679
原创 Day30- 贪心算法part04
基本思路是先将人们按照身高从高到低排序,对于身高相同的人,则按照前面比他们高的人数(ki值)从小到大排序。然后,依次将这些人插入到结果队列中的指定位置。基本思路是找出气球的重叠部分,并在这些重叠部分中射箭。如果一个箭可以击中多个气球,那么就不需要再射另外的箭来击中这些气球了。目标是最小化射出的箭的数量。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付。处射出一支箭,若有一个气球的直径的开始和结束坐标为。表示队列中一些人的属性(不一定按顺序)。你不知道气球的确切 y 坐标。可以射出的弓箭的数量。
2024-01-18 21:20:47 400
原创 Day29- 贪心算法part03
如果数组中的负数少于 K,剩余的操作应该用于反转最小的正数(如果有的话),并且要注意,如果剩余操作次数是偶数,最终结果不会改变;然后,首先从左向右遍历,确保每个孩子如果比他左边的孩子评分高,则获得更多的糖果;其次,从右向左遍历,确保每个孩子如果比他右边的孩子评分高,则也获得更多的糖果。如果一个车从加油站 A 出发,无法到达加油站 B,那么 A 和 B 之间的任何一个加油站都不能作为起始点到达加油站 B。,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回。首先,需要给每个孩子至少一颗糖果。
2024-01-15 16:31:00 1528
原创 Day28- 贪心算法part02
在每一步都更新能够到达的最远距离。遍历数组中的每个元素,不断更新从当前位置或之前的位置能够到达的最远距离。如果在任何时刻,这个最远距离小于当前位置的索引,这意味着无法到达当前位置,因此也就无法到达数组的最后一个位置。在遍历数组的过程中,不断更新在当前跳跃范围内,能够达到的最远距离。计算并返回最大利润,遍历价格数组,只要发现第二天的价格高于今天的价格,就计算这一天的利润,并累加到总利润中。贪心算法的核心思想是只要明天的价格比今天高,就在今天买入,明天卖出。这样,通过累积每一次的小利润,可以得到最大的总利润。
2024-01-15 15:59:45 394
原创 Day27- 贪心算法part01
当当前子数组的和小于0时,意味着它对于后续子数组的和只会有负面影响,因此应该从下一个元素开始重新计算子数组的和。贪心算法的核心思想是遍历数组,记录每次数字序列摆动的变化(即差值由正变负或由负变正),不需要关心摆动的具体大小,只需要知道它是上升还是下降。,这个孩子会得到满足。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。接着遍历数组,对于每个新的差值,如果它和前一个差值构成摆动,就更新计数器和。算法的思路是尽可能地满足胃口最小的孩子,这样可以尽可能多地满足更多的孩子。
2024-01-15 15:35:25 1297
原创 Day26- 回溯算法part06
假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。(肯尼迪国际机场)出发的先生,所以该行程必须从。的棋盘上,并且使皇后彼此之间不能相互攻击。编写一个程序,通过填充空格来解决数独问题。数独部分空格内已填入了数字,空白格用。的棋子放置方案,该方案中。每一种解法包含一个不同的。
2024-01-15 14:56:42 468
原创 Day25- 回溯算法part05
数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。,找出并返回所有该数组中不同的递增子序列,递增子序列中。给定一个可包含重复数字的序列。给定一个不含重复数字的数组。返回所有不重复的全排列。
2024-01-11 14:24:01 427
原创 Day24- 回溯算法part04
其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。,用以表示一个 IP 地址,返回所有可能的。返回的解集中,子集可以按。返回该数组所有可能的子集(幂集)。正好由四个整数(每个整数位于。之间组成,且不能含有前导。给定一个只包含数字的字符串。,这些地址可以通过在。
2024-01-09 12:13:22 1327
原创 Day23- 回溯算法part03
如果至少一个数字的被选数量不同,则两种组合是不同的。中的每个数字在每个组合中只能使用。是正着读和反着读都一样的字符串。,并以列表形式返回。分割成一些子串,使每个子串都是。中可以使数字和为目标数。对于给定的输入,保证和为。给定一个候选人编号的集合。中所有可以使数字和为。解集不能包含重复的组合。所有可能的分割方案。
2024-01-08 15:39:04 457
原创 Day22- 回溯算法part02
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。该列表不能包含相同的组合两次,组合可以以任何顺序返回。的字符串,返回所有它能表示的字母组合。所有可能的有效组合的列表。
2024-01-06 21:12:18 412
原创 Day21- 回溯算法part01
函数通过添加当前元素到组合中,然后递归地调用自身来添加下一个元素,来生成组合。当组合的大小达到 k 时,它会被添加到结果列表中。在回溯过程中,最近添加的元素会被移除,以便于尝试下一个可能的元素。函数初始化结果变量和当前组合变量,然后调用。函数来生成所有组合。
2024-01-05 12:31:07 471
原创 Day20- 二叉树part09
它选择数组中间的元素作为根节点,并递归地对左半部分和右半部分执行同样的操作,以创建左右子树。改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。所以结果应当返回修剪好的二叉搜索树的新的根节点。二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。,因此可以丢弃整个左子树,并递归地在右子树上应用同样的过程。,则它的左子树上所有节点的值也一定小于。
2024-01-04 23:07:54 357
原创 Day18- 二叉树part07
在访问每个节点时,它计算当前节点和前一个节点的差值,并更新最小差值。这种方法确保了比较的是在BST中排序后相邻的节点,从而找到最小的差值。中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(函数通过引用传递一个指向上一个节点的指针,以及当前值的计数和最大计数。分别在当前节点的左右子树中,那么当前节点就是它们的最近公共祖先。然后,根据当前计数更新众数列表。如果当前节点的值与上一个节点的值相同,则增加当前计数;
2024-01-02 20:22:20 402
原创 Day17- 二叉树part06
合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;它首先找到当前子数组中的最大值及其索引,然后以这个最大值创建一个新节点作为根节点。之后,函数递归地在最大值左边的子数组上构建左子树,以及在最大值右边的子数组上构建右子树。如果两个节点都不为空,则创建一个新节点,其值为两个节点的值之和。最终返回合并后的树的根节点。,它接受三个参数:当前正在检查的节点、该节点的值应大于的最小值和小于的最大值。null 的节点将直接作为新二叉树的节点。中的一个节点为空,则返回另一个节点。
2024-01-02 16:44:56 929
原创 Day16- 二叉树part05
在这个实现中,首先创建一个哈希表来存储中序遍历中每个值对应的索引,这样可以在构建树时快速定位根节点在中序遍历中的位置。同时,记录下每一层的第一个节点的值。当所有层都被遍历完成后,最后记录的值即为最底层最左边节点的值。找到这个根节点在中序遍历中的位置,这样就可以确定左右子树的范围,并递归地对左右子树进行同样的操作。每次处理一层节点时,取出队列中的所有节点,并将它们的子节点加入队列。对于后序遍历中的最后一个元素,它是当前子树的根节点。如果当前节点不是叶子节点,函数递归地在左子树和右子树中寻找符合条件的路径。
2024-01-02 16:18:51 373
原创 Day15- 二叉树part04
如果一个节点的左右子树都是平衡的,并且左右子树的高度差不超过1,那么这个节点是平衡的,函数返回这个节点的高度(即左右子树的最大高度加1)。如果当前节点是叶子节点(即没有子节点),则将当前路径添加到结果向量中。对于非叶子节点,函数递归地调用自身来处理左子树和右子树,每次调用时将当前节点的值和一个箭头符号 "->" 追加到路径字符串中。如果一个节点的左右子树高度差超过1,或者其任一子树不平衡,则该树不平衡。检查当前节点的左子节点是否存在且是叶子节点(即没有左右子节点)。函数,并将返回的值加到总和中。
2023-12-29 17:13:50 399 1
原创 Day14- 二叉树part03
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。如果左右子树的高度不同,则递归地计算左右子树的节点数,并将它们加上根节点本身。如果当前节点只有左子树或只有右子树,则返回单侧子树的最小深度加1。将左子树和右子树深度的最大值加1(当前节点的深度)后返回。如果当前节点有两个子节点,则返回左右子树中的最小深度加1。如果是,意味着到达了叶子节点的下一个节点,返回深度0。是指从根节点到最远叶子节点的最长路径上的节点数。
2023-12-28 13:28:04 557 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人