自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营day48|单调栈part01

【代码】代码随想录算法训练营day48|单调栈part01。

2024-08-20 07:29:30 168

原创 代码随想录算法训练营day46|动态规划part13

LeetCode 5. Longest Palindromic Substring(LeetCode 647. 同一題的思路改一下、加一點,就能通過LeetCode 5)

2024-08-20 06:49:26 187

原创 代码随想录算法训练营day45|动态规划part12

【代码】代码随想录算法训练营day45|动态规划part12。

2024-08-20 06:25:57 206

原创 代码随想录算法训练营day44|动态规划part11

将dp定义为boolean类型,dp[i]直接表示s.substring(0, i)是否为t的子序列。修改遍历顺序后,可以利用滚动数组,对dp数组进行压缩。

2024-08-15 05:16:47 257

原创 代码随想录算法训练营day43|动态规划part10

【代码】代码随想录算法训练营day43|动态规划part10。

2024-08-15 04:36:32 232

原创 代码随想录算法训练营day42|动态规划part09

【代码】代码随想录算法训练营day42|动态规划part09。

2024-08-14 05:26:32 233

原创 代码随想录算法训练营day41|动态规划part08

动态规划:版本二(使用二維數組(和卡哥思路一致),下面還有使用一維滾動數組的更優化版本)动态规划:版本二(使用一維數組)

2024-08-14 05:06:16 180

原创 代码随想录算法训练营day39|动态规划part07

这题的dp和滚动数组的解法都值得学习一下。

2024-08-14 03:18:14 370

原创 代码随想录算法训练营day38|动态规划part06

【代码】代码随想录算法训练营day38|动态规划part06。

2024-08-09 03:50:15 208

原创 代码随想录算法训练营day37|动态规划part05

感觉今天学的技巧性都挺强的,完全背包的还得再看看;

2024-08-08 04:02:50 288

原创 代码随想录算法训练营day36|动态规划part04

二维数组版本(便于理解)

2024-08-07 05:28:23 172

原创 代码随想录算法训练营day35|动态规划part03

【代码】代码随想录算法训练营day35|动态规划part03。

2024-08-06 05:25:11 229

原创 代码随想录算法训练营day34|动态规划part02

这题主要考虑一下障碍在的位置然后比对路径就好了。

2024-08-06 05:09:50 121

原创 代码随想录算法训练营day32|动态规划part01

动态规划中每一个状态一定是由上一个状态推导出来的,,贪心没有状态推导,而是从局部直接选最优的。这题和第一题的斐波那契数是差不多的。

2024-08-06 03:21:03 195

原创 代码随想录算法训练营day31|贪心part05

【代码】代码随想录算法训练营day31|贪心part05。

2024-08-02 05:47:55 137

原创 代码随想录算法训练营day30|贪心算法part0

【代码】代码随想录算法训练营day30|贪心算法part0。

2024-08-02 05:37:02 118

原创 代码随想录算法训练营day29|贪心算法part03

情况二:rest[i] = gas[i]-cost[i]为一天剩下的油,i从0开始计算累加到最后一站,如果累加没有出现负数,说明从0出发,油就没有断过,那么0就是起点。情况三:如果累加的最小值是负数,汽车就要从非0节点出发,从后向前,看哪个节点能把这个负数填平,能把这个负数填平的节点就是出发节点。这题还是比较简单的,只需要监控5美元和10美元的情况就好了,然后在20元的时候优先使用10美元的情况。情况一:如果gas的总和小于cost总和,那么无论从哪里出发,一定是跑不了一圈的。

2024-08-02 05:12:58 130

原创 代码随想录算法训练营day28|贪心part02

第一题 122. Best day to sell and buy stock II。

2024-07-31 06:08:30 225

原创 代码随想录算法训练营day27|贪心part01

优先考虑饼干的解法没有想到,确实也是一个很好的思路。

2024-07-31 05:42:47 170

原创 代码随想录算法训练营day25|回溯part04

第一题是:491. No-decreasing Subsequences。

2024-07-31 03:24:39 246

原创 代码随想录算法训练营day24|回溯算法part03

这一题和分割回文串类似,也是一个分割问题。第一题:93. Restore IP Address。第三题:90.Subsets II。第二题:78. Subsets。

2024-07-27 02:11:18 438

原创 代码随想录算法训练营day23|回溯算法part02

可能有的录友想,为什么 used[i - 1] == false 就是同一树层呢,因为同一树层,used[i - 1] == false 才能表示,当前取的 candidates[i] 是从 candidates[i - 1] 回溯而来的。第三题:131. Palindrome Partitioning。这题和第一题的区别是,有重复的数字,但是不能重复使用数字。第二题是:40. Combination Sum II。第一题是:39. Combination Sum。回溯+动态规划优化回文串判断。

2024-07-26 05:16:05 162

原创 代码随想录算法训练营day22|回溯算法part01

这块可能初学者还不太理解,后面的回溯算法解决的所有题目中,我都会强调这一点并画图举相应的例子,现在有一个印象就行。第三题是:17. Letter Combinations of a Phone Number。递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。第二题是: 216.Combination Sum III。,是的,我指的是所有回溯法的问题都可以抽象为树形结构!因为回溯法解决的都是在集合中递归查找子集,第一题是 77.Combinations。

2024-07-25 05:19:29 179

原创 代码随想录算法训练营day21| Binary Tree part08

第一题是 669.Trim a Binary Search Tree。递归: 左闭右开 [left,right)递归: 左闭右闭 [left,right]迭代: 左闭右闭 [left,right]

2024-07-24 07:03:08 172

原创 代码随想录算法训练营day20|Binary Tree part07

第一题是:235. Lowest Common Ancestor of a Binary Search Tree。

2024-07-24 06:42:05 117

原创 代码随想录算法训练营day18|BinaryTree part06

在回溯的过程中,必然要遍历整棵二叉树,即使已经找到结果了,依然要把其他节点遍历完,因为要使用递归函数的返回值(也就是代码中的left和right)做逻辑判断。如果不是二叉搜索树,最直观的方法一定是把这个树都遍历了,用map统计频率,把频率排个序,最后取前面高频的元素的集合。求最小公共祖先,需要从底向上遍历,那么二叉树,只能通过后序遍历(即:回溯)实现从底向上的遍历方式。至于用前中后序哪种遍历也不重要,因为就是要全遍历一遍,怎么个遍历法都行,层序遍历都没毛病!統一迭代法-中序遍历。3.取前面高频的元素。

2024-07-24 06:02:39 143

原创 代码随想录算法训练营day17 | binary tree part 05

这题感觉是需要用到前序遍历,先找到binary tree的根节点,然后再分配他的左右节点。2. 样例中最小节点 可能是int的最小值,如果这样使用最小的int来比较也是不行的。第三题:700. Search in Binary Search Tree。第四题: 98. Validate Binary Search Trees。本题,其实就是在二叉搜索树中搜索一个节点。这就决定了,二叉搜索树,递归遍历和迭代遍历和普通二叉树都不一样。这题也是比较基础的,先用递归三部曲确定范围和参数。

2024-07-19 04:48:55 299

原创 代码随想录算法训练营day16|Binary Tree part04

这一题是要找到最下最左的node值,我看到这题的思路是要先找到最深的地方,然后再查node的值。第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)第二步:如果不为空,那么取后序数组最后一个元素作为节点元素。第三步:找到后序数组最后一个元素在中序数组的位置,作为切割点。第五步:切割后序数组,切成后序左数组和后序右数组。第一步:如果数组大小为零的话,说明是空节点了。说到一层一层切割,就应该想到了递归。第二题是112. Path Sum。第六步:递归处理左区间和右区间。

2024-07-18 03:27:25 210

原创 代码随想录算法训练营day15| binary tree part03

对于完全二叉树来说,需要注意的是是否满节点,在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。今天的题目也算是昨天和前天的一些二叉树知识的巩固和应用,递归的部分看着还行,迭代的部分没有怎么看,准备留到第二次来写。然后解法上要先明确递归三部曲,第一步是看递归函数的参数和返回值,第二步是明确终止条件,第三步是明确单层递归的逻辑。如果该节点的左节点不为空,该节点的左节点的左节点为空,该节点的左节点的右节点为空,则找到了一个左叶子。

2024-07-17 03:46:30 310

原创 代码随想录算法训练营day14 | binary tree part02

不难发现,想要翻转二叉树,只需要把他的左右节点,以及次节点进行反转就可以。这边的思路就是在遍历的时候进行反转。前序遍历更适合用于实时计算节点的深度,而后序遍历更适合用于计算节点的高度。本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。今天把递归的都整明白了,迭代的方法有点绕,得好好想想。今天的题目也都还是对于之前讲的递归、迭代的遍历方式的一种引用体现。,所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。对称二叉树主要需要遍历的是左右两棵树的元素,

2024-07-16 04:26:20 337

原创 代码随想录算法训练营day13|二叉树part1

然后接下来就是二叉树中的递归和迭代遍历。分别介绍前中后序遍历的部分。统一的迭代法很好用,但是需要思考的比较多,到时候得回来复习一下。今天学习了一下二叉树的各种种类,例如满二叉树和完全二叉树。剩下递归的和普通的迭代法只需要知道思路可以很快的写出来。还有存储方式,链式存储和顺序存储。迭代(stacks)

2024-07-15 02:27:44 194

原创 代码随想录算法训练营11|stacks & queue part2

这题初见的时候还是有点懵的,就感觉说这个想不到怎么解法,但是看了卡哥的动图引导就了解了一点,相当于1047那个消消乐一样,只不过是一个个存进stacks里,然后在有符号运算的时候计算数,然后再合并。学习到了大顶堆和小顶堆的概念,这题可以使用小顶堆来弹出小的数,然后留在堆中的就是题目需要的数了。还学了优先队列的部分,但是具体的还要再理解一下。主要的处理就是分辨加减乘除,然后根据stacks的特性巧妙的达成了题目的要求,同时也是计算机计算这些公式的标准做法,即为后缀表达式。附上参考的代码,以及简化版本。

2024-07-13 04:45:30 211

原创 代码随想录算法训练营day10 |stack&queue

这道题也比较简单,就是类似爱消除一样把同样的adjacent给消掉,输出没有连续相同的字符串。这题就是要检测左括号和右括号是否相同,且必须要有相同类型的左右一组,如果不符合就输出false。也是比较简单的题,主要考察对于stack的功能。今天的第一题是:232. Implement Queue using Stacks。今天的题目相对来说简单一些,有一些剩余的时间可以用来巩固之前学习的内容。stack有的功能:Push, Pop。这题也是差不多的,只不过是反过来。还有一种直接将字符串当作栈的办法。

2024-07-12 03:22:08 174

原创 代码随想录算法训练营day09|字符串part2

主要要做的就是根据给出的数字n,将末尾的n个字符插入到字符串的前面。给出的方法是把字符串分成length-n和n部分,然后让他们整体反转,然后再把length-n和n部分各自反转,就变成了想要的输出。题目需要在一串字符中,把每个单词都反转,我的思路是,以空格来分段,然后遍历每段的单词数量,然后将他们整体翻转。如果设限,不用split的话,我们可以用双指针的做法来做,然后反转的部分和之前字符串part1做的344. 541类似。第一题 151. Reverse Words in a String。

2024-07-11 06:10:45 229

原创 代码随想录算法训练营day08|字符串part1

这一题感觉初看有点复杂,限定了2k个字符的前k个反转,然后剩下的如果不够k个字符,反转剩下的全部,如果介于k与2k之间,则反转前k个字符,然后剩下的不变。然后用一个for循环来操作,剩下的部分不足2k的再分布讨论。用temp来做交换。第三题是来自卡玛网的,将字符串中的数字都转换成number,这一步同时也需要我们去扩充字符串的大小。题目需要做的是将字符串反转,比如hello转换成olleh,还是比较简单的,可以用双指针做出来。今天的题目还是在巩固双指针的部分,可以多思考一下从左右两端进行遍历的情况。

2024-07-11 04:43:59 279

原创 代码随想录算法训练营day07

接下来如何移动left 和right呢, 如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应该向左移动,这样才能让三数之和小一些。如果 nums[i] + nums[left] + nums[right] < 0 说明 此时 三数之和小了,left 就向右移动,才能让三数之和大一些,直到left与right相遇为止。这道题对于哈希解法来说不太合适,缺点是很费时间也很容易超时,去重也是一件很难的事情。

2024-07-10 07:30:25 283

原创 代码随想录算法训练营day6|哈希表part1

第二种就是要求tableSize大于dataSize的时候,哈希表可以将冲突的位置中放入一个数,然后向下找一个空位放置另外一个冲突的数。这题主要的难点是计算十位和个位的平方数。这题需要做的操作是建造一个hash map然后遍历数组去查询数组中的元素,然后输出数组元素对应的下标。,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。但是如果给入的数值大于哈希表的大小,就引入了一个新的概念叫做哈希碰撞。然后我还看到了别人写的快慢指针的解法,很好的思路,值得学习。但是这种方法泛用性不强。

2024-07-10 05:33:57 328

原创 代码随想录算法训练营day4|leetcode 24, 19,142

以及一种先行移动长链表实现同步移动的解法,比较基础,就是算出数组的长度,然后让cur A和curB在同一起点上。感觉递归方法会很方便,写起来也比较少,但是重要的是刚接触到的时候很不容易想出来递归的方式来做题目。感觉这题技巧性很高。有点没看明白,今天的几道题都是由于时间原因没有好好看,准备回头再复习一下。感觉和reverse有点像,也是先定位要改变的位置,然后指向下一个想要的顺序,然后再还原。第三题:Intersection of Two Linked List。是用的快慢指针的办法。

2024-07-09 08:03:43 160

原创 代码随想录算法训练营day3|203.Remove Linkedlist Elements 707.Design Linked List 206.Reverse LinkedList

先确定head是不是null以及head的值是否为题目需要的,然后再把当前的值 curr作为链表的头节点再往下遍历。链表里有单链表和双链表,双链表就是每个节点有两个指针域,一个指向上一个、一个指向下一个。解法: 要注意的点是区分单链表和双链表的处理方式不同,以及双列表中判断从哪一端来遍历更好。首先复习一下链表的一些基础知识,首先链表是由数据和指向下一个数据的指针组成。今天的还是有点难度,特别是递归的部分还需要再理解一下。今天的第一题是移除链表中的元素。还有首位相连的循环链表。链表可以做到动态删减。

2024-07-09 04:59:54 271

原创 代码随想录算法训练营第二天|977. Squares of a Sorted Array 209.Minimum Size Subarray Sum 59.Spiral Matrix II

在这里学到的一点就是,当计算这个数的平方时,可以使用l++和r--来对下一步要操作的数字进行进位,在res[j--] = nums[l] * nums[l++];中, 仍然是得到的是这个数字l的平方,然后l++的作用就是使用num[l]的当前值进行计算,然后将l增加1。因为数组里面如果有负数的话,平方过后得到的数字可能是比较大的,这种情况就很适合使用双指针来解题。很重要的一点:边界问题。待做事项:复习之前的题目,总结数组,附上看到的思维导图,很不错。其实还算比较简单的,重要的是每条边的处理规则需要统一。

2024-07-04 06:58:38 295

空空如也

空空如也

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

TA关注的人

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