代码随想录
•)
这个作者很懒,什么都没留下…
展开
-
代码随想录补|leetcode491
2.本题是要按数组原本的顺序求子序列,因此不能sort数组,不能用子集问题的used数组方式去重。注意set集合在每一层去重,是横着去重的。每次回溯都有生成一个新的set集合,就不会影响竖着的。这也是和used数组去重不同的地方。这道题和子集Ⅱ问题的共同点是:都是收取过程中的结果。不同点是:1.本题要求递增子序列中。原创 2023-12-29 11:38:32 · 370 阅读 · 0 评论 -
代码随想录补|leetcode90 子集问题
解释见这两篇,代码拼一下就行。原创 2023-12-28 22:54:17 · 342 阅读 · 0 评论 -
代码随想录补|leetcode78 子集问题
这道题回溯结束的条件是startIndex == nums.length(),因为这代表已经把这个数组遍历了一遍。同组合问题,为了防止(1,2),(2,1)这种重复子集出现,每次回溯时startIndex++。这道题和之前的组合问题不一样的是,组合问题是获得叶子节点的结果,这个子集问题是每一次的遍历都是结果。所以result.add()这个操作应该放在回溯函数的开头,这样也可以很巧妙的把[ ]这个空集合add进去。原创 2023-12-28 22:44:19 · 470 阅读 · 0 评论 -
day20|
450.删除叶子节点。原创 2023-12-20 11:32:59 · 32 阅读 · 0 评论 -
day19
中序遍历 —— 加到map中——转大顶堆——得到和peek()一样的值的数,非常繁琐。原创 2023-12-19 21:54:32 · 41 阅读 · 1 评论 -
day16
这道题的重点在于:递归过程中如果左子树或者右子树有一个为-1,那就不是平衡二叉树了,本轮没必要再继续了,而且下一轮、下下轮...也可以直接返回了。原创 2023-12-16 17:50:16 · 41 阅读 · 1 评论 -
day14|层序遍历
这样会有一个问题就是,在最后一轮遍历的时候,left和right都是空但是依然被offer进了queue,导致queue不是空的,让!199右视图.把层序遍历每层的最后一个组成list。107自底而上.在原来的基础上加一个。429N叉树 把每个孩子都遍历了。637.层平均,非常简单。原创 2023-12-13 22:30:01 · 45 阅读 · 1 评论 -
day12|239,347
本题这个单调队列的重点在于:每次窗口移动的时候,调用que.poll(滑动窗口中移除元素的数值),que.offer(滑动窗口添加元素的数值),然后que.peek()就返回我们要的最大值。本题的暴力解法是超时的,所以得用单调队列,要保证队列里单调递减或递增的原则。原创 2023-12-12 17:26:47 · 35 阅读 · 0 评论 -
day11|20、1047、150
有点像学数据结构时老师举得例子。遍历s,如果遇到的是(/[/{,则入栈)/]/},如果遇到的是)/]/},若相等则出栈,不相等就说明不配套。如果stack始终为空,说明肯定没有配套的。最后看栈是否清空了。原创 2023-12-09 22:19:41 · 28 阅读 · 1 评论 -
day10|232,
这道题要两个栈实现队列,那么就是一个栈负责进,一个栈负责出,出的那个里没东西了,进的那个就pop().出的那个再push(),想通就比较简单了。queue1作为主队,queue2作为备用。原创 2023-12-08 22:12:40 · 33 阅读 · 0 评论 -
day9| KMP算法
真的很难,只是把原理记住了,这里默写一遍.KML算法在从一个字符串找某一字符串中是否出现的场景下经常应用。原创 2023-12-08 19:30:38 · 47 阅读 · 0 评论 -
day8|344,
左端为left,右端为right,交换left和right上的数值知道left >= right,其中=对应的是奇数个元素的数组,>对应的是偶数个元素的数组。1.split指令 以空格为regex划分;2.对得到的判断是否为“”,如果不是则保留;这道题不难就是有点麻烦,真的很麻烦。2.StringBuilder转一下。3.反转字符串 并加空格。1.找到要右旋的起始位置。原创 2023-12-06 22:28:12 · 42 阅读 · 1 评论 -
day7|454,383,15,18
这道题有点像两数之和,不同的是,两数之和可以通过map(num1,value-nums1)一轮就确认,四数之和要通过两轮,第一轮遍历nums1+nums2,而且value对应的是和出现的次数。1.nums[i]的去重:注意nums[i] == nums[i-1]是正确的,而nums[i] == nums[i+1]是错误的,因为left=i+1,但是left和i是可以一样的,就结果集内部是允许重复的。2.当和为0了,这一轮left和right就没用了,需要重新找,left和right的值去重后再各自加或减;原创 2023-12-05 22:30:26 · 47 阅读 · 0 评论 -
day6|242,349,202,1
day4。原创 2023-12-04 22:39:11 · 56 阅读 · 0 评论 -
day4| 24,19,02.07
day4: 24题的递归写法不太会做,环形链表没来得及做,等明天24.这个题不画图非常不容易做,图源 .原创 2023-12-02 22:09:10 · 57 阅读 · 1 评论 -
day3| 203、707、206
day3:707不会。原创 2023-12-01 21:26:49 · 45 阅读 · 1 评论 -
day2|leetcode 977、209、904、59
非科班 基础较差day2:209,59自己做时都不会。原创 2023-11-30 21:04:44 · 69 阅读 · 0 评论 -
day1|leetcode 704、35、34、69、367、27
非科班,之前只是学过数据结构课,基础较差,写给自己的碎碎念day1: 34题2分法的方法没做出来,69、367有int,long的坑,27题没做出来快慢指针的做法。首先是二分查找法的使用前提条件:1.确定可以使用后,有两种写法1.左闭右闭:这是我之前一直用的写法,其中需要注意的是int mid = start + (end - start)/2或者是int mid = start + (end - start)>>1。这样相比于常见的(start = end)/2,可以防止溢出。原创 2023-11-29 16:50:52 · 42 阅读 · 0 评论