- 博客(30)
- 问答 (2)
- 收藏
- 关注
原创 temp.append(“->“ + nums[high])为什么慢
在Java中,字符串的拼接效率主要受实现机制的影响。让我们深入分析这两种情况的具体原因。
2025-01-21 10:08:05
179
原创 组合总和Ⅳ数学推导(看到大佬思路做一下记录)
设dp[i][j]为:选取了前i个数(nums[0…i−1])分别作为排列的最后一个元素(前面的元素没有限制),且排列之和为j的所有排列的总数,根据问题,我们需要得到和为target的所有排列,即dp[n][target]。添加辅助函数:设P[i][j]为:选取第i个数(nums[i−1])作为排列的最后一个元素,且排列之和为j的所有排列的总数。空间优化:由于计算时,我们只使用该列上一行(dp[i-1][j])和前面某列最末尾元素(dp[n][j - nums[i - 1]),因此可将dp空间优化为一维。
2024-09-13 10:04:34
934
原创 背包问题中的组合数与排列数的区别
组合数是不关心物品加入的顺序的,只要最终结果是相同的,那么{1, 5}和{5, 1}会视为同一种组合。排列数则考虑顺序,不同的物品加入顺序会视为不同的排列,所以{1, 5}和{5, 1}是不同的解。这种区别在背包问题中的重要性在于你想解决的是组合问题(只关心物品组合的不同)还是排列问题(关心顺序)。你可以通过在循环中添加打印语句来查看dp数组在每次迭代时的动态变化。下面是实现打印dp。
2024-09-12 22:10:18
457
原创 0/1背包的遍历顺序问题
因为一维dp的写法,背包容量一定是要倒序遍历(原因上面已经讲了),如果遍历背包容量放在上一层,那么每个dp[j]就只会放入一个物品,即:背包里只放入了一个物品。dp[j]表示:容量为j的背包,所背的物品价值可以最大为dp[j],那么dp[0]就应该是0,因为背包容量为0所背的物品的最大价值就是0。因为对于二维dp,dp[i][j]都是通过上一层即dp[i - 1][j]计算而来,本层的dp[i][j]并不会被覆盖!在计算dp[j]的时候,不能重复使用 放入同一个物品 而计算出的旧dp[j]。
2024-09-12 19:18:34
408
原创 消息的订阅与发布机制
订阅消息(只要发布方发送’2023年第5期英语周报这个消息’)订阅方的回调函数就会被调用。发布方发布’2023年第5期英语周报这个消息’
2024-02-18 20:19:51
178
原创 【无标题】
第二个时机:该计算属性所关联的Vue原有属性的值发生改变的时候,getter方法会被重新调用一次。第一个时机:第一次访问这个属性的时候。
2024-02-15 20:42:06
109
1
原创 Vue 中的 Object.defineProperty()
设置临时变量 temp的目的是防止在读取属性值自动调用get方法时出现无限递归的现象。// 给上面的phone对象新增一个color属性。//value : '太空灰',// getter方法配置项。//return '动态''getter方法执行了'//setter方法配置项。'setter方法执行了'//这是一个普通对象。
2024-02-14 22:38:22
228
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人