自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 动态规划part05 -- 子序列

【代码】动态规划part05 -- 子序列。

2024-07-08 18:18:54 129

原创 动态规划part04 -- 买卖股票Ⅱ

相同,只是需要在买入的时候减去手续费。

2024-07-08 00:02:05 290

原创 动态规划part04 -- 买卖股票

【代码】动态规划part04 -- 买卖股票。

2024-07-05 23:40:45 243

原创 动态规划part03 -- 打家劫舍

【代码】动态规划part03 -- 打家劫舍。

2024-07-04 19:36:08 279

原创 动态规划背包part02 -- 完全背包的应用

【代码】动态规划背包part02 -- 完全背包的应用。

2024-07-04 16:39:25 222

原创 # 动态规划背包part02 -- 完全背包

那么就是先把1加入计算,然后再把5加入计算,得到的方法数量只有{1, 5}这种情况。而不会出现{5, 1}的情况。背包容量的每一个值,都是经过 1 和 5 的计算,包含了{1, 5} 和 {5, 1}两种情况。完全背包与01背包区别就是遍历顺序,完全背包内层遍历要从小到大开始,因为每个物品可以取n次。假设:coins[0] = 1,coins[1] = 5。本题只能外层遍历物品,内层遍历背包。

2024-07-04 14:27:48 297

原创 动态规划背包part01 -- 01背包的应用

1049. 最后一块石头的重量 II背包的体积为sum / 2背包要放入的商品(集合里的元素)重量为 石头的重量,价值也为石头的重量背包如果正好装满,说明找到了总和为 sum / 2 的子集。背包中每一个元素是不可重复放入。

2024-07-02 17:05:53 393

原创 动态规划背包part01 -- 01背包

(也就是容量为j的背包,放入物品i了之后的价值即:dp[j])二维dp遍历的时候,背包容量是从小到大,而一维dp遍历的时候,背包是从大到小。表示从下标为[0-i]的物品里面任取,放进容量为j的背包里面价值总和的最大值。表示从下标为[0-i]的物品里面任取,放进容量为j的背包里面价值总和的最大值。此时dp[2]就已经是30了,意味着物品0,被放入了两次,所以不能正序遍历。,即:i为0,存放编号0的物品的时候,各个容量的背包所能存放的最大价值。,即放物品i,指定是取最大的,毕竟是求最大价值,

2024-07-01 17:04:12 745

原创 动态规划基础part02 -- 路径问题

右子树有i-1个结点的搜索树数量 * 左子树有0个结点的搜索树数量 +右子树有i-2个结点的搜索树数量 * 左子树有1个结点的搜索树数量 +右子树有i-3个结点的搜索树数量 * 左子树有2个结点的搜索树数量 +既然dp[i]表示拆分i可得到的最大乘积,那么得到他的方式就有两种,右子树有0个结点的搜索树数量 * 左子树有i-1个结点的搜索树数量。dp[0]无需初始化,dp[0] = 1,空二叉树也是二叉搜索树。,由于j要从1遍历到i-1,所以取最值的时候要加上dp[i]dp[i]表示拆分i可得到的最大乘积。

2024-06-27 12:52:08 381

原创 动态规划基础part01

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。

2024-06-26 12:35:48 247

原创 代码随想录算法训练营第七天| LeetCode454、LeetCode383、LeetCode15、 LeetCode18

移动以后的值和上一个一样,还必须继续移动,否则会将重复的结果输出到结果集中。这一步就是在做**「剪枝」**的工作。双指针的一般思路:利用数组的有序性,达到搜索所有解「剪枝」的目的。首先对输入数组排序,循环变量为。使用哈希表,首先将前两个数组的和存储到哈希表中,后续检查0减去后两个数组的和是否在哈希表中。,说明两个数的和太大了,由于数组已经有序,的大小关系我们还不知道,此时需要考虑将。,说明两个数的和太小了,由于数组已经有序,的大小关系我们还不知道,此时需要考虑将。,说明得到了一组可行解。

2024-05-28 22:05:43 412

原创 代码随想录算法训练营第六天| LeetCode49、LeetCode242、LeetCode438、LeetCode349、 LeetCode202、LeetCode1

本题可以先对两个字符串都进行排序,然后逐位比较各个元素是否相等。使用defaultdict。使用defaultdict。

2024-05-27 22:32:46 337

原创 # 代码随想录算法训练营第四天| LeetCode24、LeetCode19、 LeetCode160、LeetCode142

所以可以设置两个指针ptrA,ptrB分别遍历A,B两个链表,当指针走到链表末尾时,令ptrA指向B的头结点headB,ptrB指向A的头结点headA,如果有相交结点,那么二者必定同时到达相交结点。上述操作可以得到快慢指针第一次相遇的结点,设从head到环入口结点个数为a,环入口到快慢指针相交结点个数为b,相交结点到环入口的结点个数为c,那么根据快慢指针走的路径是2倍关系,容易得出。比较直观的想法,首先遍历一遍链表,记录链表的长度,删除倒数第n个结点,即删除正数第。

2024-05-26 15:35:17 283

原创 # 代码随想录算法训练营第三天| LeetCode203、LeetCode707、LeetCode206

根据题目要求,需要将结点值等于val的结点从链中删掉,链表中删除某一个结点,大体思路是将该节点的前置结点的next指针指向该结点的后置结点,即。,然后将该结点删除,释放占用空间,java/python语言有其自带的内存管理机制,无需增加删除的操作。这里采用增加哨兵结点的方法,记录preNode,最后返回哨兵结点的next结点即可。

2024-05-25 23:42:58 233

原创 代码随想录算法训练营第二天| LeetCode209、LeetCode59

本题主要是模拟的思想,使用for循环模拟从1到n²的填充过程,不断更新数组的下标即可。时间复杂度:O(n²)时间复杂度:O(n²)空间复杂度:O(1)空间复杂度:O(1)

2024-05-23 22:52:28 292

原创 代码随想录算法训练营第一天| LeetCode704、 LeetCode34、LeetCode35、LeetCode27、LeetCode26、LeetCode977、LeetCode844

题目链接:704. 二分查找在有序数组中查找、插入元素,首先考虑的就是二分法,二分法最终要的重点以及难点个人认为有两点循环可以继续的条件:即究竟是选择 还是 分别对应训练营中的中间数如何选择,即选择还是(在34题具体介绍)代码如下Leetcode34. 在排序数组中查找元素的第一个和最后一个位置题目链接:34. 在排序数组中查找元素的第一个和最后一个位置思路:两次二分,分别查找左右边界Leetcode35. 搜索插入位置题目链接:35. 搜索插入位置思路:个人习惯使用左闭右开区间写二分,如果数组中包

2024-05-22 21:56:09 267

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除