自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day28 216.组合总和III● 17.电话号码的字母组合

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。该列表不能包含相同的组合两次,组合可以以任何顺序返回。的字符串,返回所有它能表示的字母组合。所有可能的有效组合的列表。

2024-05-14 15:25:46 165 1

原创 day25 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树

改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。通过修剪二叉搜索树,使得所有节点的值在。的新值等于原树中大于或等于。排列,请你将其转换为一棵。给你二叉搜索树的根节点。

2024-05-13 10:49:51 217

原创 day 23 ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(维护、更新最大长度以及当前最大长度(数量)的数值组成的数组,遍历完一遍之后,该长度自动变为最大长度,该数组也就是最大长度的元素的数组。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。给你一个含重复值的二叉搜索树(BST)的根节点。差值是一个正数,其数值等于两值之差的绝对值。,找出并返回 BST 中的所有。(即,出现频率最高的元素)。

2024-05-09 17:14:17 225

原创 day22 ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;返回以该节点为根的子树。如果节点不存在,则返回。null 的节点将直接作为新二叉树的节点。,判断其是否是一个有效的二叉搜索树。合并过程必须从两个树的根节点开始。你需要在 BST 中找到节点值等于。给定二叉搜索树(BST)的根节点。题目:给定一个不重复的整数数组。给你一个二叉树的根节点。返回合并后的二叉树。

2024-05-08 15:02:25 375 1

原创 day21 513.找树左下角的值、 112. 路径总和 、 113.路径总和ii、 106.从中序与后序遍历序列构造二叉树 、105.从前序与中序遍历序列构造二叉树

的路径,这条路径上所有节点值相加等于目标和。路径总和等于给定目标和的路径。假设二叉树中至少有一个节点。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。

2024-05-08 10:05:27 274 1

原创 day 20 110.平衡二叉树 、 257. 二叉树的所有路径 、 404.左叶子之和

返回所有从根节点到叶子节点的路径。题目:给定一个二叉树,判断它是否是。题目:给你一个二叉树的根节点。题目:给定二叉树的根节点。,返回所有左叶子之和。是指没有子节点的节点。

2024-05-06 15:06:47 203

原创 day19 104.二叉树的最大深度 、559.n叉树的最大深度、 111.二叉树的最小深度、 222.完全二叉树的节点个数

的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。是指从根节点到最远叶子节点的最长路径上的节点数。题目:给定一个二叉树,找出其最小深度。叶子节点是指没有子节点的节点。,求出该树的节点个数。题目:给定一个二叉树。

2024-05-05 14:20:08 195 2

原创 day 18 层序遍历、 10 226.翻转二叉树 、101.对称二叉树 2

思路:利用队列来处理层序关系,始终维护队列中的元素在循环开始时为当前层的所以树节点,对每个节点的处理操作:处理值、处理儿子指针、维护队列。思路:先翻转根节点,再翻转子树,翻转的操作是swap(root->left,root->right);思路:先确定边界,再确定某一步:比较外枝,再比较内枝(递归);(即逐层地,从左到右访问所有节点)。,翻转这棵二叉树,并返回其根节点。题目:给你一棵二叉树的根节点。题目:给你一个二叉树的根节点。题目:给你二叉树的根节点。, 检查它是否轴对称。

2024-05-04 19:27:27 203

原创 day13 239. 滑动窗口最大值、 347.前 K 个高频元素、 总结

思路:遍历数组,使用hash表统计每个元素的频率,然后遍历hash表,使用小顶堆(priority_queue)自动排序,维护频率前k大的pair,最后pop()小顶堆,得到最后的结果vector。思路:自定义一个单调队列,维护这样的性质:队首元素始终是最大元素,而且从首到尾元素单调递减,而且最大元素能够被pop(int val)弹出,队列的元素个数不做要求。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。,请你返回其中出现频率前。题目:给你一个整数数组。题目:给你一个整数数组。

2024-04-29 20:44:30 217

原创 day11 20. 有效的括号、 1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。思路:为什么用栈来解,因为栈本质上所提供的关系就是包含与被包含的关系,先入栈的元素在逻辑上包含后入栈的元素,栈底元素在逻辑上包含栈顶元素,正好括号的匹配也是必须从里到外,也就是从栈顶到栈底匹配,这符合出栈的顺序。思路:遇到数字就入栈,遇到操作符就将对应的操作数出栈,并将计算结果入栈。

2024-04-27 22:16:01 238

原创 day 10 232.用栈实现队列、225.用队列(单端)实现栈

思路:两个栈,一个栈用来存入数据,另一个栈用来调整元素顺序(两次反序等于一次正序),弹出元素。题目:请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(思路:入对正常入,出队时通过不断的pop和push,调整元素顺序。

2024-04-26 19:43:03 319 1

原创 day8: 344.反转字符串、 541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、 卡码网:55.右旋转字符串

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。题目:给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。

2024-04-24 16:27:10 575

原创 day 6 242.有效的字母异位词 、349. 两个数组的交集、202. 快乐数 、1. 两数之和

思路:用数组来做哈希表,遍历第一个字符串,初始化哈希表,再遍历第二个数组,更新哈希表,若两次修改之后哈希表全为0,则说明出现的字母完全相同。中每个字符出现的次数都相同,则称。输出结果中的每个元素一定是。242.有效的字母异位词。349. 两个数组的交集。,编写一个函数来判断。题目:给定两个字符串。

2024-04-24 09:43:29 174

原创 day 7 454.四数相加II 、 383. 赎金信 、 15. 三数之和、 18. 四数之和

请你找出并返回满足下述全部条件且。答案中不可以包含重复的三元组。,请你计算有多少个元组。,判断是否存在三元组。454.四数相加II。

2024-04-23 14:43:08 218

原创 day4 24. 两两交换链表中的节点 、 19.删除链表的倒数第N个节点 、 面试题 02.07. 链表相交 、142.环形链表II

求出两个链表的长度,并求出两个链表长度的差值,然后让curA移动到,和curB 末尾对齐的位置,比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA == curB,则找到交点。使用双指针,等间隔同时移动,找出要删除节点的前一个节点的指针,再进行删除。如要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。题目:给你一个链表,删除链表的倒数第。

2024-04-22 11:19:26 312

原创 day3 203.移除链表元素 、 707.设计链表 、206.反转链表

203注意删除一个节点,需要找到其前序节点,根据前序节点获取当前节点、当前节点的后继节点的指针,完成删除和链表的接续。题目:你可以选择使用单链表或者双链表,设计并实现自己的链表。val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果是双向链表,则还需要属性prev以指示链表中的上一个节点。假设链表中的所有节点下标从开始。实现index-1valvalvalindexindexindexindex。

2024-04-21 20:09:38 249 1

原创 day2: 977. 有序数组的平方、209.长度最小的子数组 、59.螺旋矩阵II

所以可以考虑合理设计,从大到小遍历数据,然后从后往前排列进新数组,这样就得到了题目要求的答案。

2024-04-21 15:01:38 315 1

原创 day1:704. 二分查找 、27. 移除元素​

解决思路:快慢双指针法,实现原地遍历,在原地建立一个符合题意的新数组,快指针负责先行遍历数组元素,选出符合要求的元素给慢指针使用,慢指针负责使用快指针所提供的值来建立新数组。由于快指针是每轮循环都走一次,慢指针只有在快指针找到符合要求的数值之后才会走,不是符合要求的数一定不会超过原数组数量,所以慢指针一定不会超过快指针,不会出现数据被意外覆写的情况。使用二分查找的思想是对搜索区间进行二分,每次迭代使得搜索区间变为原来的一半,区间缩小的方式为对半二分,在区间缩小时要注意最后找到值或者迭代到区间不能二分为止。

2024-04-18 15:46:21 421

空空如也

空空如也

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

TA关注的人

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