- 博客(19)
- 收藏
- 关注
原创 [Python]代码随想录Day36[动态规划]
尽量分成重量相同的两堆01 背包:每一个数字只能选一次1.dp含义:dp[j] 装完背包容量为j的背包 最大重量(价值)为dp[j], 就是重量2.递推公式:dp[j] = max(dp[j],dp(j - weight[i] + value[i])3.初始化. dp[0] = 0 dp[1501] = 04.遍历数序第一层物品for(i = 0;i ++)第二次背包j --) 向下取整 5/2 = 25.打印dp数组。
2025-08-11 15:31:27
705
原创 [Python]代码随想录Day35[动态规划][背包问题]
01背包问题二维:有n种物品, 每种物品只有一个完全背包:有n种物品,每种物品有无限个多重背包:有n种物品,每种物品的个数各不相同eg:背包的重量为4,装满这个背包的最大价值是什么?暴力解法:每个物品取或者不取 O(n^2) 回溯有二维dp数组解法是基础,在这个基础上需要优化成一维dp数组.dp数组的定义 含义dp[i][j] 下标[0-1]之间的物品任取 然后放进容量为j的背包里 的价值dp[i][j]
2025-08-08 14:43:56
982
原创 [Python]代码随想录Day34[动态规划]
其实就是固定j之后,拆分i-j就已经把所有的情况,包括拆分j的情况都给包含了。1.dp数组的定义以及下标的含义 dp[i][j] dp[i]1.dp数组的定义以及下标的含义 dp[i][j]1.dp数组的定义以及下标的含义 dp[i][j]1.dp数组的定义以及下标的含义 dp[i][j]dp[i] 对i进行拆分,得到最大的乘积为dp[i]从(0,0)到(i,j)有多少种不同的路径。从(0,0)到(i,j)有多少种不同的路径。定义二维dp数组dp[i][j]定义二维dp数组dp[i][j]
2025-08-06 19:15:26
1121
原创 [Python]代码随想录Day32[动态规划]
1.确定dp数组的定义以及下标的含义 dp[i][j] dp[i]1.确定dp数组的定义以及下标的含义 dp[i][j] dp[i]1.确定dp数组的定义以及下标的含义 dp[i][j] dp[i]1.dp数组的定义以及下标的含义 dp[i][j] dp[i]- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。dp[i]:到达i所需要的最小花费为dp[i]dp[i]:表示第i个斐波那契数为dp[i]
2025-08-05 15:00:12
925
原创 [Python]代码随想录Day17
利用中序遍历,看看它的元素是不是有序 单调递增的 但是可以继续优化。前序直接合并,修改root1。700.二叉搜索树中的搜索。98.验证二叉搜索树。
2025-08-04 12:06:11
705
原创 [Python]代码随想录Day16
1. 找树左下角的值:使用BFS层序遍历,优先处理右节点,最后访问的节点即为左下角值;2. 路径总和问题:递归判断是否存在路径和等于目标值,113题还涉及路径记录;3. 根据遍历序列构建二叉树:通过前序/后序确定根节点,中序划分左右子树,递归构建。关键点包括:BFS的节点处理顺序、递归终止条件、遍历序列的切割位置等。
2025-08-01 14:43:14
535
原创 [Python]代码随想录Day12
方法含义是否展开 []append(x)把x当作一个整体放进去❌ 不展开extend(x)把x里的元素一个个加进去✅ 会展开extend()是用来批量插入多个元素,而append()是用来插入单个对象(即使这个对象是个列表,也会整体插入)。
2025-07-24 15:46:50
1192
原创 [Python]代码随想录Day11
步骤操作目的Step 1 入队前保持队列单调递减(淘汰更小的)Step 2 出队移除已经滑出窗口范围的下标Step 3 记录开始记录窗口最大值(q[0]就是最大值)步骤操作数据结构复杂度说明1统计频率dictO(n)遍历 nums,记录频次2构建小顶堆heapO(n log k)保持堆大小为 k,保留最大频次3弹出结果arrayO(k log k)最终倒序输出结果数组。
2025-07-23 14:46:32
1149
原创 [Python] 代码随想录 Day7
和有效的字母异位词一样,就是需要主要最后的判断,本题是判断ransomNote能不能由magazine组成,所以最后不是减的时候,哈希表中的每一个值为0,是如果hash[i]<0就意味着不能组成ransomNote了。和两数之和使用hashmap差不多,只是把四个数组拆成了2+2 变成了两个数组之和。→ 后续不可能满足三数之和为 0 → 提前终止。与前一个元素重复 → 跳过。与前一个元素重复 → 跳过。【454】四数相加||【454】四数相加||🧮 执行过程逐步追踪。
2025-07-18 17:58:37
379
原创 [Python] 代码随想录Day3
链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。
2025-06-15 18:43:23
416
原创 [Python] 代码随想录day2
要先初始化一个大的值,保证min()后,第一次的len能被更新,之后就在和上一个被更新过的len做min(),最后为什么return需要if min_len!= float('inf') 呢,为了确保比如nums=[1,1,1,1,1] target = 10,任意一个组合加起来都不大于10,min_len就等于默认的float('inf')了,很大的值就被输出了,但是如果不存在符合条件的子数组,应该返回0。
2025-06-15 16:26:03
426
原创 [python] 代码随想录day1 (ACM模式&leetcode模式)
数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标对应的数据。数组在内存中是连续分布的(在 C/C++ 中),或者是引用结构(如 Java 中的二维数组。二分法的时间复杂度为:O(log n)C++ 中,&:取地址符Java中,输出数值也是16进制,这不是真正的地址,而是经过处理过后的数值了,我们也可以看出,二维数组的每一行头结点的地址是没有规则的,更谈不上连续。 [left , right] [left, right) 通常是左闭右闭 or 左闭右开 循环不变量
2025-06-14 15:35:21
697
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅