代码随想录
文章平均质量分 60
记录平时做算法题的笔记心得
沙白猿
这个作者很懒,什么都没留下…
展开
-
代码随想录 Day-24
动态规划,英文:Dynamic Programming,简称DP,所以动态规划中每一个状态一定是由上一个状态推导出来的,,贪心没有状态推导,而是从局部直接选最优的。原创 2024-03-21 22:52:26 · 220 阅读 · 0 评论 -
代码随想录 Day-23
这里可以看出来是有两个维度考虑,和力扣题目 135.分发糖果(可以看我day-22的文章) 有点类似。因此两个维度一起考虑一定会顾此失彼。Tips:对于插入和删除操作,LinkedList优于ArrayList,因为当元素被添加到LinkedList任意位置的时候,不需要像ArrayList那样重新计算大小或者是更新索引。原创 2024-03-21 22:41:26 · 377 阅读 · 0 评论 -
代码随想录 Day-22
不懂的可以用不要*2,用例子(nums = 4,2,3;k = 1)手动模拟一遍,或者debug一下就会明白。原创 2024-03-21 19:53:54 · 443 阅读 · 0 评论 -
代码随想录 Day-21
应该要考虑特殊的情况,例如:nums={0};或者 nums={1,2};或者 nums={0,1}等特殊情况。由第一个元素为0的时候可以得出结论,应该在覆盖的范围里面更新覆盖范围,这样当。nums={0,2,3}结果才会对。原创 2024-03-19 21:20:05 · 326 阅读 · 0 评论 -
代码随想录 Day-20
代码随想录里面卡尔就举出一个例子来理解:例如:有一堆钞票,你可以拿走十张,如果想达到最大的金额,怎么拿?(那就是每次都拿走虽大金额的钞票,那不就是达到最大金额。再举一个例子:就是有一堆盒子,你有一个背包体积为n,如何把背包尽可能地装满?如果还每次选最大的盒子,就不行了。这时候用到动态规划。原创 2024-03-19 19:34:23 · 256 阅读 · 0 评论 -
代码随想录 Day-19
组合问题是选位置不同的数,分割问题是选位置不同的缝插进去,都是找位置,本质是相同的为什么错误呢?因为我的result是一个集合,里面的数据元素是累加的,所以在处理结果的时候会发生添加重复的数据元素。所以解决方法应该是——用队列,每次将数据弹出去。(即使将result设立为全局变量也无动于衷)牛比的大神可以做N皇后与解数独的题,小弟能力不够,到此为止,等我二刷再说原创 2024-03-19 17:31:29 · 305 阅读 · 0 评论 -
代码随想录 Day-18
(组合是不用强调元素的位置,排列需要强调元素的位置例如:{1, 2} 和 {2, 1} 在组合上,就是一个集合,因为不强调顺序,而要是排列的话,{1, 2} 和 {2, 1} 就是两个集合了。回溯法解决的问题都可以抽象为树形结构。原创 2024-03-16 23:26:17 · 377 阅读 · 1 评论 -
代码随想录 Day-17
迭代法有精力的可以去学习尝试。原创 2024-03-15 23:03:38 · 393 阅读 · 1 评论 -
代码随想录 Day-16
【代码】代码随想录 Day-16。原创 2024-03-13 20:35:26 · 364 阅读 · 0 评论 -
代码随想录 Day-14
利用辅助队列来实现,底层逻辑如下:首先先把根节点存进队列里面,然后在弹出根节点的时候,将根节点的左、右树存进队列里面,用一个length(队列的大小)来记录每一层需要弹出去的元素,将这些元素存进二维数组里面去,只要队列不为空就一直重复上面的步骤。原创 2024-03-13 14:52:24 · 345 阅读 · 0 评论 -
代码随想录 Day-13
树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。原创 2024-03-07 23:43:25 · 331 阅读 · 1 评论 -
代码随想录 Day-5
【代码】代码随想录 Day-5。原创 2024-01-20 14:40:05 · 350 阅读 · 0 评论 -
代码随想录 Day-2
1、首先记得数组的下标是从零开始的,小心当做题做着做着把下标当作1开始。2、在循环里面,换句话说,在数组的循环里面,记得坚持一个原则——循环不变量原则3、数组中的元素是没有办法删除的,只能覆盖4、数组中的左右指针、快慢指针、滑动窗口的使用情况。原创 2024-01-15 00:01:20 · 358 阅读 · 0 评论 -
代码随想录 Day-3
单链表:节点由两部分组成,一个是数据域,一个是指针域(储存着下一个节点的指针位置),最开始的叫做头节点,最后一个节点指针域放的是null(空指针)。双链表:节点由三部分组成,一个是数据域,两个是指针域(一个储存的是上一个节点的指针位置,另一个储存的是下一个节点的指针位置)循环链表:节点是由两部分组成,一个数据域,一个是指针域。原创 2024-01-17 22:46:44 · 300 阅读 · 0 评论 -
代码随想录 Day-4
1、链表的种类:单链表、双链表、环形链表2、链表里的元素是通过指针来连接的链表的基本操作1、链表的操作最好是设计一个虚拟的头节点来操作 ,不然就要另外考虑头节点是否空指针的异常报错的情况2、设计链表的操作,熟练之后就可以不用担心链表的增删改查的问题。原创 2024-01-18 23:01:01 · 309 阅读 · 1 评论 -
代码随想录 Day-6
1、一些哈希法的理论基础:什么是哈希表,哈希碰撞,哈希函数,以及什么时候用哈希法2、数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。set是一个集合,里面放的元素只能是一个key。map是一种的结构,双值。原创 2024-01-23 23:15:57 · 362 阅读 · 1 评论 -
代码随想录 Day-7
【代码】代码随想录 Day-7。原创 2024-01-25 16:50:49 · 355 阅读 · 0 评论 -
代码随想录 Day-8
字符串的学习力扣 #28 实现strStr()力扣 #459 重复的子字符串字符串的总结回顾双指针原创 2024-03-06 23:19:20 · 426 阅读 · 1 评论 -
代码随想录 Day-9
可以理解为是一种装数据的容器,数据是先进后出new Stack() (新建一个空栈)push(入栈)pop(将栈顶的元素出栈,并返回,简称出栈)peek(获取栈顶元素)isEmpty(判断栈是否为空)size() (获取的栈的有效元素的个数)原创 2024-03-05 15:36:55 · 380 阅读 · 1 评论 -
KMP算法基本知识
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,本身包含了模式串的局部匹配信息。KMP算法的O(m+n)原创 2024-03-05 15:41:15 · 321 阅读 · 1 评论 -
代码随想录 Day-11
当快指针与慢指针相同的时候,可以将快指针的值直接覆盖慢指针的值,然后快指针继续往后走,慢指针后退一个;不相同时候直接往后两个同时往后走。Of Course!用肯定是用快慢指针,不是左右指针。那么快慢指针怎么走呢?先 isEmpty() 然后再 peek()回想一下,类似这样重复的是否也可以用双指针实现?这里注意先判断为不为空先,不然会报错。(栈适合做相邻字符的消除操作)原创 2024-03-06 23:11:16 · 368 阅读 · 1 评论 -
代码随想录 Day-1
力扣题目#704704. 二分查找 - 力扣(LeetCode)注意最左、右端值的位置,以及何时用 middle-1,何时用 middle。原创 2024-01-13 22:15:59 · 356 阅读 · 0 评论