- 博客(61)
- 收藏
- 关注
原创 代码随想录算法训练营第五十六天|583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇
当word1[i - 1] 与 word2[j - 1]相同的时候,dp[i][j] = dp[i - 1][j - 1]在word1[i - 1] 与 word2[j - 1]不相同的时候情况一:删word1[i - 1],最少操作次数为dp[i - 1][j] + 1情况二:删word2[j - 1],最少操作次数为dp[i][j - 1] + 1情况三:同时删word1[i - 1]和word2[j - 1],操作的最少次数为dp[i - 1][j - 1] + 220分钟1.删除操作和增加
2023-06-14 21:55:25 62
原创 剑指offer二十天计划|001. 整数除法、002.二进制加法、003.前 n 个数字二进制中 1 的个数
20分钟自己看到题目的第一想法看完题解之后的想法自己实现过程中遇到的问题总结46分钟自己看到题目的第一想法看完题解之后的想法自己实现过程中遇到的问题总结29分钟自己看到题目的第一想法看完题解之后的想法自己实现过程中遇到的问题总结
2023-06-14 21:53:03 374
原创 代码随想录算法训练营第五十五天|392.判断子序列、115.不同的子序列
和 1143.最长公共子序列 的递推公式基本是一样的,区别就是 本题 如果删元素一定是字符串t,而 1143.最长公共子序列 是两个字符串都可以删元素。另一种双指针的方法11分钟
2023-06-14 15:36:16 44
原创 代码随想录算法训练营第五十二天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
动态规划解决的子序列问题!子序列问题的递推公式是在条件判断里的。
2023-06-12 17:14:18 360
原创 代码随想录算法训练营第四十六天|139.单词拆分、关于多重背包,你该了解这些!、背包问题总结篇!
问能否能装满背包(或者最多装多少):dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);,对应题目如下:动态规划:416.分割等和子集(opens new window)动态规划:1049.最后一块石头的重量 II(opens new window)问装满背包有几种方法:dp[j] += dp[j - nums[i]] ,对应题目如下:动态规划:494.目标和(opens new window)
2023-06-04 00:47:29 529
原创 代码随想录算法训练营第四十三天|1049. 最后一块石头的重量 II、494. 目标和、474.一和零
看成0-1背包的问题,因为一个只能使用一次。尽量让分出来的两堆石头的重量尽可能一样。然后最后分出来两堆,a和b,应该是a-b的绝对值,a又等于总重量-b。i ++) {i ++) {j --) {11分钟。
2023-06-03 17:14:25 26
原创 代码随想录算法训练营第四十二天|01背包问题,你该了解这些!、01背包问题,你该了解这些! 滚动数组、416. 分割等和子集
二、01背包问题,你该了解这些! 滚动数组dp[j]表示:容量为j的背包,所背的物品价值可以最大为dp[j]。倒序遍历是为了保证物品i只被放入一次!三、416. 分割等和子集背包的体积为sum / 2背包要放入的商品(集合里的元素)重量为 元素的数值,价值也为元素的数值背包如果正好装满,说明找到了总和为 sum / 2 的子集。背包中每一个元素是不可重复放入。29分钟
2023-06-01 01:27:10 187
原创 代码随想录算法训练营第三十八天|理论基础、509. 斐波那契数、 70. 爬楼梯、 746. 使用最小花费爬楼梯
确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组5分钟5分钟5分钟
2023-05-31 00:08:11 46
原创 代码随想录算法训练营第三十五天|860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球
【代码】代码随想录算法训练营第三十五天|860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球。
2023-05-27 00:19:45 304
原创 二分查找三道题
一旦只出现一次元素,那么就变成奇数位和后面的偶数位数值相同了。一般是偶数位和它后面的奇数位的数值相同。如:11223344。输入:nums=[1,1,2,3,3,4,4,8,8]输入:nums=[3,3,7,7,10,11,11]
2023-05-26 20:20:18 737
原创 代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
20分钟看最大的覆盖范围,每一次的覆盖范围是i+nums[i],看最大值是否能到数组的末端。13分钟与上一题的区别在于本题是求到达终点的最小步数。29分钟
2023-05-25 21:59:41 38
原创 代码随想录算法训练营第三十一天|理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和
一定是取最大的,所以dp[i] = max(dp[i - 1] + nums[i], nums[i]);dp[i]:包括下标i(以nums[i]为结尾)的最大连续子序列和为dp[i]。dp[i - 1] + nums[i],即:nums[i]加入当前连续子序列和。1.确定dp数组(dp table)以及下标的含义。nums[i],即:从头开始计算当前连续子序列和。
2023-05-24 01:02:58 117
原创 代码随想录算法训练营第二十九天|491.递增子序列、46.全排列、47.全排列 II
【代码】代码随想录算法训练营第二十九天|491.递增子序列、46.全排列、47.全排列 II。
2023-05-21 00:38:42 26
原创 代码随想录算法训练营第二十八天|93.复原IP地址、78.子集、90.子集II
自己看到题目的第一想法看完题解之后的想法自己实现过程中遇到的问题总结startIndex一定是需要的,因为不能重复分割,记录下一层递归分割的起始位置。==本题我们还需要一个变量pointNum,记录添加逗点的数量。==因为切割的数量是有限制的,不能一直隔一位切一次。终止条件很巧妙,是用的逗号的个数不能超过3判定的。[startIndex, i]是最后一个区间,而不是[startIndex-1,i],因为传进来的时候startindex已经加一了。// return;return;
2023-05-19 23:30:17 27
原创 数组双指针七道题
数组双指针直接秒杀七道题目,来源于labuladong https://mp.weixin.qq.com/s/Z-oYzx9O1pjiym6HtKqGIQ题目:如果快指针遇到不相同的数,那么慢指针先向右移动一位,再赋值。11分钟10分钟29分钟29分钟题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。20分钟
2023-05-18 22:29:34 132
原创 从尾到头打印链表、合并两个排序的链表、验证回文字符串(二)(最多删除一个的情况)
【代码】从尾到头打印链表、合并两个排序的链表、验证回文字符串(二)(最多删除一个的情况)
2023-05-18 17:04:00 40
原创 代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和II、131.分割回文串
自己看到题目的第一想法看完题解之后的想法自己实现过程中遇到的问题总结这个还是在一个集合中求的,所以需要设置startIndex。而不是backtracking(candidates,target,startIndex);return;return;i ++) {} }20分钟。
2023-05-17 00:32:39 26
原创 代码随想录算法训练营第二十五天|216.组合总和III、17.电话号码的字母组合
自己看到题目的第一想法看完题解之后的想法自己实现过程中遇到的问题总结如何防止取到重复的数。//不是backtracking(k,n,startIndex+1)!!!就是start Index在做这个事情,如果题目问的是排列个数,那就不要startIndex了。return;i
2023-05-15 00:55:26 46
原创 快速排序(基于分治法)的java实现
通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。本质上和二叉树有些像,不断地将pivot拆分成两半,然后这样递归下去。快速排序是冒泡排序的升级版,同属交换排序的类型。三个入参:数组,low,high。
2023-05-14 17:00:01 192
原创 代码随想录算法训练营第二十四天|回溯算法理论基础、 77. 组合
纯暴力搜索,for循环嵌套组合问题:N个数里面按一定规则找出k个数的集合。1234能组合出多少2个数字的组合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式。与组合不同,强调了元素的顺序棋盘问题:N皇后,解数独等等如何理解回溯法?所以回溯法都可以抽象为树形结构,N叉树回溯法的模板void backtracking(),返回值void,参数一般比较多回溯函数终止条件if(终止条件) {
2023-05-13 01:09:23 70
原创 代码随想录算法训练营第二十三天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
第三题用到了二叉树中的双指针法,再多复习一下前面的题。
2023-05-12 01:07:42 37
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人