- 博客(66)
- 收藏
- 关注
原创 136.只出现一次的数字
除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。上面的三种方法都用到了集合,空间复杂度为线性。使用位运算:异或,可以做到常数空间复杂度。方法4:位运算,异或。
2024-06-18 16:12:08
288
原创 121.买卖股票的最佳时机
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。买入这只股票,并选择在。
2024-06-17 20:18:05
221
原创 70. 爬楼梯
奈何组合涉及到了阶乘,数大过了int、long,使用BigInteger又不能转换。使用double会导致精度误差,总是差了答案2、3。一个实例,和答案(1134903170)差了3。其他小的实例没问题,大的实例相差2、3。// 因为一次只能爬1/2步,f(x)=f(x−1)+f(x−2)你有多少种不同的方法可以爬到楼顶呢?可以看出,思路是没问题的,限制于类型的长度。个数字进行组合,求和组合结果即为答案。// 设爬到第x阶台阶方案为f(x)开始看见是个简单题,就做。
2024-06-17 19:16:55
175
原创 455.分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。,这是能让孩子们满足胃口的饼干的最小尺寸;,我们可以将这个饼干。
2024-05-07 17:18:54
181
原创 538.把二叉搜索树转换成累加树
树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。的新值 = 原树中大于或等于。
2024-05-07 16:16:08
165
原创 669.修剪二叉搜索树
改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。通过修剪二叉搜索树,使得所有节点的值在。给你二叉搜索树的根节点。
2024-05-02 15:10:57
192
原创 450.删除二叉搜索树中的节点
对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。给定一个二叉搜索树的根节点。,删除二叉搜索树中的。
2024-05-02 13:52:04
130
原创 701.二叉搜索树中的插入操作
可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。,新值和原始二叉搜索树中的任意节点值都不同。给定二叉搜索树(BST)的根节点。
2024-04-28 13:40:12
148
原创 236.二叉树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。真美啊,两句主要代码,加上递归,就搞出这道题了。因为根据定义最近公共祖先节点可以为节点本身。的最近公共祖先是节点。的最近公共祖先是节点。方法一:递归、dfs。
2024-04-26 10:30:57
167
原创 501.二叉搜索树中的众数
思路:中序遍历二叉搜索树得到按从小到大排序的ans,再遍历ans,将众数记录到temp中(借助定义base、count、maxCount,完成实现),再将temp链表转化成mode数组返回。给你一个含重复值的二叉搜索树(BST)的根节点。,找出并返回 BST 中的所有。如果树中有不止一个众数,可以按。(即,出现频率最高的元素)。不想再写第二遍的题。
2024-04-22 16:40:44
245
原创 98.验证二叉搜索树
从最左下开始,按照中序遍历的顺序,是满足从小到大的(如果是二叉搜索树),判断其是否是一个有效的二叉搜索树。给你一个二叉树的根节点。
2024-04-20 00:56:15
183
原创 617.合并二叉树
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;null 的节点将直接作为新二叉树的节点。合并过程必须从两个树的根节点开始。返回合并后的二叉树。
2024-04-18 10:37:09
292
原创 110.平衡二叉树
给定一个二叉树,判断它是否是平衡二叉树。时间复杂度:O(n * n)方法一:自顶向下的递归。方法二:自底向上的递归。空间复杂度:O(n)
2024-04-10 21:12:28
429
原创 222.完全二叉树节点个数
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。,求出该树的节点个数。
2024-04-09 15:01:39
153
原创 141.142.环形链表ⅠⅡ
将一个带环的链表长度分为三部分:环外长度(a),入环到快慢指针相遇的地方长度(b),环的剩余部分长度(c),设相遇时fast已经跑了n圈环,则fast跑的路程为a+n(b+c)+b。所以此时再定义一个pos指向head,让slow跟随着pos一同移动,在pos移动到a时,会和slow相遇(slow == pos)指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。则:a=(n-1)b+nc=n(b+c)-b。,仅仅是为了标识链表的实际情况。则:a+b=n(b+c)
2024-03-31 21:30:56
369
原创 28.找出字符串中第一个匹配项的下标
"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。方法二:KMP待补充。
2024-03-26 00:38:38
214
原创 151.反转字符串中的单词
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。方法一:调用函数(也可自己实现)是由非空格字符组成的字符串。时间复杂度:O(n)空间复杂度:O(n)
2024-03-25 01:09:46
150
原创 344.反转字符串 541反转字符串Ⅱ
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。,从字符串开头算起,每计数至。
2024-03-23 23:34:13
151
原创 15.三数之和
先排序O(nlogn),再固定k,用双指针遍历数组,剔除重复的三数和通过这一句代码。答案中不可以包含重复的三元组。,判断是否存在三元组。
2024-03-22 21:42:56
184
原创 454.四数相加
再次双层for时,nums3、nums4和与nums1、nums2相反时,取出这个<sum出现的次数>,将这些<sum出现的次数>求和到ans中,返回即可。双层for循环,将nums1、nums2的所有元素和的可能求出来,用<key, value>表示<sum,sum出现的次数>,请你计算有多少个元组。
2024-03-20 00:09:52
201
原创 1.两数之和
在一个for循环中,一边向里面添加元素,一边通过map.containsKey判断已经加入map的元素中是否有合适的值target - nums[i] ,这个判断相当于代替了一个循环。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。整数,并返回它们的数组下标。时间复杂度:O(n * n)你可以按任意顺序返回答案。,请你在该数组中找出。空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(n)
2024-03-19 20:46:07
124
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人