自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day23

continue是迭代到下一个循环,在这里是指,在同一层递归中对于相同的数只用一次,至于一个数用两回甚至多回,是在递归的嵌套中实现的,而不是在循环实现的,这就是所说的,循环管的是树的宽度,递归管深度。break是这一轮循环剩多少都不走了,在这里其实就是搜寻结束了,下一步就return result了,因为candidates是排序好的。gpt建议我改成i,这与我的直觉不符,我觉得因该传回i+1,而这正是与这道题元素可重复利用要求相违背的一个传参。总结起来就是,悟已往之不谏,知来者之可追。

2025-04-01 19:57:03 150

原创 day22

77. 组合 - 力扣(LeetCode)开始学回溯了!对于剪枝操作,我想说的是:1.i表示对于当时ans状态,能求出符合题意结果的(第一次到最后一次)机会,startindex是第一次,n-(k-len(ans))+1是最后一次,左闭右开所以是再加12.(k-len(ans))是还可以添加几个元素,n-(k-len(ans))+1代表最后一次机会的那个元素,而且这道题i不是索引,而是数值,因为题目就是1到n的数值,也有误导性在。216. 组合总和 III - 力扣(LeetCode)1.是9

2025-03-31 12:16:17 185

原创 day21

【代码】day20。

2025-03-29 10:38:53 112

原创 day20

这题的点在于,他不是某种序的遍历,只是查找,logn的找。

2025-03-29 08:39:58 211

原创 day18

我认为这题我的理解不够透彻,先照葫芦画瓢,期待蓦然回首。必须写is not None,去规避val是0.

2025-03-28 00:10:40 182

原创 day17

【代码】day17。

2025-03-27 16:14:02 168

原创 day16

这样造成第二个就肯定是要遍历到所有可能路径,不撞所有的南墙(>targetsum)不回头,而第一道题撞一个南墙就可以回头,这也是第二道题需要回溯的原因。第一个只需要返回有没有符合targetsum的true or false就可以了,第二个要求返回所有的路径。这题的关键在于,前序遍历,只要遇到一个更新到max_depth的就肯定是左下角。

2025-03-27 13:49:36 103

原创 day15

经过思考,这题很无聊,表面上利用了完全二叉树的特性,实际上只是判断了是否是满二叉树,如果是,直接带公式,如果不是,挨个遍历,我觉得不如层次遍历直观,思想也没有可复制性,我要层次遍历一下算了。这样就完美实现了,但是速度很慢,我自己其实也有感知,就是如果把判断和计算高度变成一套递归就好了,现在是每个节点上一个小递归,在一个大递归上,所以很慢。逻辑在于三判断,后序遍历,然后左子树or右子树or本树,有一个不平衡,那就不平衡,这样递归,子树的不平衡就能传到根节点。前序遍历,第一个if是递归出口,后两个才会回溯。

2025-03-22 22:20:07 417

原创 day14

最最最误导人的就是compare(self,left,right),这里边的left和right,并不代表一个节点的左孩子和右孩子(根节点是例外的巧合),在后续的递归中,2.但是不同的在于,如果有一边为空,不能放任他在返回一个0,因为这里并不是叶子节点,叶子节点是没有孩子的。而答案给的是compare,这个名字容易引向另一个误区,就是这两个子树也不是相等的,这是第。1.其实这题我觉得蛮难,核心思想的把握较难,具体来说:不能简单的isSymmetric嵌套isSymmetric来做递归,这是。

2025-03-18 21:48:37 299

原创 day13(二叉树)

写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。1.本题核心在于,判断是否在最右端的条件是什么,应该是每一个内层循环的最后一次,但是这个count必须在内循环之外去算,因为在内循环迭代的过程中,队列的长度可能在增加,有新的节点入队。3.对于中序遍历,要用循环一直遍历到最左下(同时将经过的节点都压栈)的节点,接着每弹栈一次,就去遍历右子树,循环往复,一直到栈空。

2025-03-18 15:02:53 540

原创 面对恐惧day10+day11(栈和队列)

2.我认为这里边还有一个误导在,所谓的单调队列,并不是只能先进先出,从代码中也可以看出这是一个deque,而单调队列,强调的是,在由deque到result的过程中是一个队列的感觉,而在维持这个单调队列时,其实是一个栈。回到学408的青涩时光,这就是后缀表达式的运算,第一次学的时候觉得很难,但是难得是自己手动把中缀转成后缀,这里只是,给你一个合法的后缀让你算一下数,所以只是简单的栈得应用,轻松过掉好吗?这里的除法向零取整,意思是对于结果为负数得除法,要取大的,反之对于正数结果取小的。

2025-03-15 16:29:23 581

原创 面对恐惧day8

字符串征程在这里我想插入一些对于列表切片的基本操作。

2025-03-07 16:11:05 249

原创 面对恐惧day7

今天补了上上次的最后一道题和昨天的全部,“正经人谁写日记啊”,以下是正正经经的day7。

2025-03-06 20:01:30 479

原创 面对恐惧day6(附加字典的基本操作)

第六天,进入哈希表的章节。.因为我是在用python实现,python实现哈希表,就用数组或者字典就可以了(字典是带有index(索引),和data(数据)的一种无序的数据结构)

2025-03-04 16:55:12 321

原创 面对恐惧day4

上面也提到过,n其实就是1,追几圈虽然理论上可以,但其实我们就要第一次就行,再细细思考,其实,符合要求的圈数必须能整除速度差,而速度差是1,这也是设置fast和slow初始速度的理论依据吧。1.第一遍我用了暴力法,快指针遍历去数链表有多少个元素,再去招倒数第n个的位置,但这样时间复杂度是n方,所以才有了代码随想录这种正宗的“快慢指针”,而不是我这种想当然的。在slow进入之后,fast只可能追了一圈,或者说,我们选择列等式选择的时间戳就是第一次,理论上你多追几圈得到的等式关系应该也可以求解的。

2025-03-04 13:57:02 464

原创 面对恐惧day3

务必注意,对于addAtIndex来说,判断越界的时候不能带等号,因为第index后边还可以加,相当于表尾。本期思考较少,均为对于链表的基础理解,但细节较多,需要熟能生巧,熟练度重要性大于思维深度。2.返回时,返回的虚拟头节点的下一个,dummy_head.next!1.就是最基础的链表操作,熟悉虚拟头节点(dummt_head)的使用。

2025-02-28 23:44:27 121

原创 ACM 格式初尝试

3.输入字符串,转化为字符串列表。4.输入字符串,转化为数字列表。

2025-02-28 14:38:38 215

原创 面对恐惧day2

3.我第一遍写错是,把slow迭代的步骤放到了cur_sum减去之前,这样减的元素就不对了。1.i是1开始的,所以在纠结位置(左闭右开)时要用i,而不是x,y,xy是0开始的。1.原文说是滑动窗口,但本质上是快慢指针的另一个perspective。2.将最终结果初始化为无穷大,方便后续更新,因为怎么更新都是变小。1.很暴力的一个算法,熟能生巧。2.偶数行和奇数行要分类讨论。2.判断奇偶要用%,不用/。

2025-02-27 23:05:12 227

原创 面对恐惧day1

1.暴力法和双指针法的区别在与,暴力法的时间复杂度是n方,双指针是n,但一眼看不明显,原因在于,删一个元素导致的运行时间差不太多,但如果删的是O(n)个元素的话,时间复杂度差的就很多,但双指针法,每一个元素最多移动一次,一次到位。4.写第一句left,right的时候,对于right是选择len(nums)还是len(nums)-1,预示着接下来的代码是遵循左闭右闭【】,还是闭右开【)。这个判断之后的,判正的次数是O(n),或者说是(n-目标元素个数)leetcode 704 二分查找。

2025-02-26 23:15:59 313

空空如也

空空如也

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

TA关注的人

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