- 博客(36)
- 收藏
- 关注
原创 LEETCODE-DAY41
按根节点值分类,数组[1,2…,i]当根节点值为j时,其左右子树分别为dp[j-1]和dp[i-j]个。显然n>=7后满足递推(n=6不满足是因为dp[3]!今日内容:343. 整数拆分、96.不同的二叉搜索树。故最终一定拆分为只含2和3的乘积才能达到最大。其次对于素数5=2+3,2*3=6>5。其他大于5的素数可同样推导。首先一定得拆成素数的乘积。
2024-04-02 16:41:51 362
原创 LEETCODE-DAY39
今日内容:62.不同路径、63. 不同路径 II。第一行遇到障碍后障碍之后的列也应初始化为0。dp[1][1]被覆盖了。
2024-03-31 15:29:36 296
原创 LEETCODE-DAY35
今日内容:860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球。问题在于points pop之后指标也会产生变化,所以需要定义一个变量来记录重叠次数。本题主要难点在于如何将数组按照h从大到小,h相同时k从小到大的方式进行排序。思路:没有重叠时需射l箭,每有一个重叠少射一箭。
2024-03-27 18:28:45 243
原创 LEETCODE-DAY34
5对应的值不能取3因为按照规则4对应的值要比3小,以此类推后四位对应的值为[3,2,1,0]末尾矛盾了。本题中每个位置的值其实有两个约束,也即要在满足规则的条件下使得左端点与右端点的值均大于等于1。今日内容:1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果。同理也要检查队首是否满足条件,此时5对应的值取3是可以的[1,2,1,3]本题的想法很重要,把问题拆分成两个子问题,对每个子问题用贪心策略求解。nums =[2,-3,-1,5,-4]通过。这样就把问题拆成了左右两个子问题。
2024-03-26 18:03:50 268
原创 LEETCODE-DAY29
今日内容:491.递增子序列、46.全排列、47.全排列 II。[4,6]满足递增条件但是还没到队列尾部所以没有放入res中。continue:for 循环中 这一层的i终止进入i+1。因为是取树上的节点所以不要return。return与continue的区别。逻辑错了应该跟path最后一位比较。要注意used数组也要相应的做回溯。18 / 58 个通过的测试用例。这是暴力去重,还有简化解法,后补。细节忘记path.copy了。应该是收集结果的判断有问题。return:函数终止。
2024-03-21 17:20:37 1670
原创 LEETCODE-DAY28
注意这里不需要return,这并不会导致无限递归,因为每一次递归的下一层i会加1。手抖把backtracking里的len(nums)写成len(path)了。今日内容:93.复原IP地址、78.子集、90.子集II。
2024-03-20 15:19:25 165
原创 LEETCODE-DAY27
故i应改为i+1,这并不会造成下标溢出,因为s[index,len(s)]正好取到s最后一个元素。今日内容:39. 组合总和、40.组合总和II、131.分割回文串。直接对candidates排序,这样可以减少排序的次数。错误在于出现为空的情况即i=index。问题在于i=index时多去重了。此时超出时间限制27/176。更便捷的方法:用index。超出时间限制172/176。回溯时参数应为i+1。
2024-03-19 16:06:51 396
原创 LEETCODE-DAY25
回溯法要用到的参数要么定义为全局参数,要么在backtracking函数的参数中,不可能在函数内定义变量,否则必会递归溢出。今日内容:216.组合总和III、17.电话号码的字母组合。一共只有十个数无需考虑剪枝。
2024-03-17 16:01:15 245
原创 LEETCODE-DAY24
i>n+1-(k-len(path))时,[i,n]中数的个数不足以使path长度到达k,故不需遍历。k-len(path)=n-i+1([i,n]中的个数)
2024-03-16 14:43:57 156
原创 LEETCODE-DAY23
今日内容:669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、总结篇。知识点:递归函数里用到的变量要在之前就定义好,不能在函数下再定义。
2024-03-15 16:44:36 193
原创 LEETCODE-DAY22
反证假设有节点B也为p,q公共祖先且深度更大,则B的值一定落在[p,A]或[A,q]中。若B落在[p,A]中则B不可能成为q的祖先节点,矛盾。证明1.显然节点A为p,q公共祖先,因为取该二叉搜索树的中序遍历,节点A位于p,q之间,由中序遍历的特性p,q分别在以A为根节点的子树两侧。今日内容:235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点。修改:还需要记录插入位置,即父节点。的节点A即为p,q的最近公共祖先。未知BUG(逻辑反了)递归具体写法还要再加强。
2024-03-14 18:16:47 715
原创 LEETCODE-DAY21
今日内容:530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先。知识点:二叉搜索树等价于中序遍历结果为递增数组。简便解法后补(可以在遍历的同时就统计出现频率)二叉搜索树与中序遍历搭配有奇效。暴力解法,时间复杂度高。
2024-03-13 16:59:40 155
原创 LEETCODE-DAY20
今日内容:654.最大二叉树 、617.合并二叉树 、700.二叉搜索树中的搜索、98.验证二叉搜索树。此处bug在于右孩子的左孩子应该还有下界要求,即大于其祖父节点的值。问题在于没有保证进入递归时root1与root2均非空。这样写太复杂,应该找一个min记录父节点之前的最小值。递归写法(直接看中序遍历的结果是否递增即可)同理左孩子的右孩子也应该有上界要求。
2024-03-12 15:12:03 289
原创 LEETCODE-DAY18
今日内容:513.找树左下角的值、112. 路径总和 、106.从中序与后序遍历序列构造二叉树。使用层序遍历,left存储每一层最左边的节点值,返回left最后一个值即可。补充:113.路径总和ii、105.从前序与中序遍历序列构造二叉树。KEY:同时维护两个栈,一个存放节点,一个存放路径上节点之和。递归时要注意参数的位置,必须保证和原始定义时输入的顺序相同。补充:LC105从前序与中序遍历序列构造二叉树。LC106从中序与后序遍历序列构造二叉树。
2024-03-10 18:49:43 270
原创 LEETCODE-DAY17
本题关键是左叶子定义:节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是叶子节点),那么A节点的左孩子为左叶子节点。今日内容:110.平衡二叉树 、257. 二叉树的所有路径 、404.左叶子之和。要注意的是无法只利用temp来判断其是否为左叶子,必须借助其父节点。
2024-03-09 17:13:24 143
原创 LEETCODE-DAY16
今日内容:104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数。二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数后者节点数(取决于高度从0开始还是从1开始)二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)最小深度是从根节点到最近叶子节点的最短路径上的节点数量。也可采用其他遍历方式(前序递归)后面再补,(属于递归解法)什么是叶子节点,左右孩子都为空的节点才是叶子节点。
2024-03-08 16:49:22 274
原创 LEETCODE-DAY15
今日内容: 层序遍历 (共10题) 226.翻转二叉树 、101.对称二叉树 2。想法是leftTra以中左右遍历,rightTra以中右左遍历。python语法:1.列表的嵌套:这里level也是一个列表。
2024-03-07 18:33:52 201
原创 LEETCODE-DAY14
144.二叉树的前序遍历、145.二叉树的后序遍历、94.二叉树的中序遍历。今日内容:二叉树基本知识,三种遍历方式。这里的顺序其实是看根节点的顺序。别忘了最基本的树如何定义。
2024-03-06 17:15:25 498
原创 LEETCODE-DAY13
原因:dict_keys([‘no surfacing’,‘flippers’]),返回的是一个 dict_keys 对象,不再是 list 类型,也不支持 index 索引。4.table[i] = table.get(i,0) + 1,table字典中获取键为i的-值,如果i不存在于字典中,则返回默认值0。del my_dict[‘a’],del关键字被用来删除字典my_dict中的键为’a’的键值对。出错原因在于此时table={1:1,2:1},table.values=[1,1]
2024-03-05 16:36:45 265
原创 LEETCODE-DAY11
今日题目:(栈与队列)20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值。错误在于elif时已经隐含了上一处判断为false,不需要多此一举,(但理论上应该结果一样?这题思路很简单,具体实现需要学习python中lamdba函数的技巧以简化,需要仔细琢磨。
2024-03-03 17:24:49 1330
原创 LEETCODE-DAY9
注意数组切片s[i:j]返回的是数组中下标i到j-1,也即s[j]并不返回,这里非常容易错。今日题目:28找出字符串中第一个匹配项的下标 459.重复的子字符串。128 / 129 个通过的测试用例。注意求最大相等前后缀是关键。即为KMP算法的实践。
2024-03-01 16:29:47 315
原创 LEETCODE-DAY8
s_split是一个list,list中每个元素是string。如需对s的部分做反转可以用:s[p:q][::-1]python技巧:在列表中交换时有更简洁的方式。错误不合题意,还要整体再翻转一次。python语法:字符串s翻转。
2024-02-29 14:51:13 310
原创 LEETCODE-DAY6
今日题目:LEETCODE 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和。
2024-02-27 14:52:41 390
原创 LEETCODE-DAY4
今日题目:LEETCODE 24(两两交换链表中的节点)、19(删除链表的倒数第N个节点)、160 链表相交 (面试题 02.07.) 、142(环形链表II)
2024-02-25 15:55:17 380
原创 LEETCODE-DAY1:数组
title: LEETCODE DAY1:数组date: 2024-02-22 13:54:30tags:#DAY1今日题目:LEETCODE 704(二分查找)、27(移除元素)附加题:34()、35()##T704写二分要注意的核心是考虑极端情况下数组中的每一个点是否都能被遍历到一个简单的例子是如下图如果在elif处写成high=mid-1,会导致mid-1处的值无法被遍历到class Solution(object): def search(self, nums, ta
2024-02-22 17:19:10 217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人