自定义博客皮肤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)
  • 收藏
  • 关注

原创 代码随想录|669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

/ 修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。// 如果结点的值大于 high,那么说明该结点及它的右子树都不符合要求,我们返回对它的左子树进行修剪后的结果;//如果结点的值小于 low,那么说明该结点及它的左子树都不符合要求,我们返回对它的右结点进行修剪后的结果;// 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),//所以结果应当返回修剪好的二叉搜索树的新的根节点。

2024-09-24 21:40:40 358

原创 代码随想录|235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

/给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。//给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。

2024-08-19 11:38:27 294

原创 代码随想录| 530.二叉搜索树的最小绝对差501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

/给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。//百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,// 那么如果 左右子树的返回值都不为空,说明此时的中节点,一定是q 和p 的最近祖先。// 满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。// 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。

2024-08-18 11:59:25 311

原创 代码随想录|654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

public boolean isValidBST(TreeNode root) {//二叉搜索树中序遍历是一个递增的有序数组。//你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。// 那么将这两个节点的值相加作为合并后节点的新值;//想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。//给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。//给定二叉搜索树(BST)的根节点 root 和一个整数值 val。

2024-08-17 22:31:59 257

原创 代码随想录|513.找树左下角的值 112. 路径总和 113. 路径总和ii 106.从中序与后序遍历序列构造二叉树

/给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。//通过找出中序中左子树节点个数,后将后序中的左子树节点找出来。//给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。//给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。// 当targetSum=root.val时就是一个需要的路径。//叶子节点 是指没有子节点的节点。//叶子节点 是指没有子节点的节点。

2024-08-15 21:44:21 453

原创 代码随想录Day13| 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数

public int countNodes2(TreeNode root) {//完全满二叉树可以直接计算节点数量2^n-1。if(root.left==null&&root.right==null){//叶子节点。//给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。//给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。//平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。//给定二叉树的根节点 root ,返回所有左叶子之和。

2024-08-14 15:15:21 273

原创 代码随想录|226.翻转二叉树 101. 对称二叉树104.二叉树的最大深度 111.二叉树的最小深度

/最小深度和最大深度不一样,最小深度要找叶子节点 不能将null节点当作叶子节点。// 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。//二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。//迭代法:前序遍历(不仅前中后序遍历可以,层序遍历也可以)//最小深度是从根节点到最近叶子节点的最短路径上的节点数量。//说明:叶子节点是指没有子节点的节点。

2024-08-09 11:20:20 363

原创 代码随想录|二叉树的递归法、迭代法、层次遍历

public void inTraversal(TreeNode root,List<Integer> list) {//中根遍历。// 后序遍历顺序 左-右-中 入栈顺序:中-左-右 出栈顺序:中-右-左, 最后翻转结果。stack.isEmpty()){//中-左-右 右左中。stack.isEmpty()){//左-右-中 中右左。stack.isEmpty()){//左中右 右中左。// 前序遍历顺序 左-中-右 入栈顺序:中-右-左。// 中序遍历顺序 左-中-右 入栈顺序:左-右。

2024-07-30 18:13:13 758

原创 代码随想录| 150. 逆波兰表达式求值239. 滑动窗口最大值347.前 K 个高频元素

if (entry.getValue() > pq.peek()[1]) { //当前元素出现次数大于小顶堆的根结点(这k个元素中出现次数最少的那个)// push(value):如果push的元素value大于入口元素的数值,那么就将队列入口的元素弹出,直到push元素的数值小于等于队列入口元素的数值为止。//弹出队头(小顶堆的根结点),即把堆里出现次数最少的那个删除,留下的就是出现次数多的了。//给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。

2024-07-29 22:31:58 275

原创 代码随想录| 232.用栈实现队列225. 用队列实现栈20. 有效的括号 1047. 删除字符串中的所有相邻重复项

/请你仅使用1个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。//给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。//boolean empty() 如果栈是空的,返回 true;//给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。//int pop() 从队列的开头移除并返回元素。//int peek() 返回队列开头的元素。

2024-07-28 12:11:34 345

原创 代码随想录|●151.翻转字符串里的单词●卡码网:55.右旋转字符串●字符串总结 ●双指针回顾

/ 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。// 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。// 请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。// 单词 是由非空格字符组成的字符串。// 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。// 给你一个字符串 s ,请你反转字符串中 单词 的顺序。// 单词间应当仅用单个空格分隔,且不包含任何额外的空格。

2024-07-27 22:17:42 538

原创 代码随想录|344.反转字符串● 541. 反转字符串II● 卡码网:54.替换数字

public void reverse(char[] s,int i, int k) {//从i开始到k翻转,k最大为s.length-1。//给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。// 给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,//如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。//如果剩余字符少于 k 个,则将剩余字符全部反转。

2024-07-25 16:21:13 268

原创 代码随想录|454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和

/新put的key的value键会覆盖相同的key的value值。//给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!// 同时还满足 nums[i] + nums[j] + nums[k] == 0。// 请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]]//给你一个由 n 个整数组成的数组 nums ,和一个目标值 target。否则返回 false。

2024-07-23 23:28:33 576

原创 代码随想录|● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和

创建26大小的数组,存放字母,然后分别在s和t中计算,s中出现的字母就在对应位置记录+1,t中出现的字母就在对应位置记录-1,最后计算是否每个位置都为0。//给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。//注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。//给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。//你可以按任意顺序返回答案。

2024-07-22 17:00:05 319

原创 代码随想录|24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II

/ 指针 pB 移到链表 headA 的头节点,然后两个指针继续移动,在指针 pA 移动了 a+c+b 次、指针 pB 移动了 b+c+a 次之后,两个指针会同时到达两个链表相交的节点,该节点也是两个指针第一次同时指向的节点,此时返回相交的节点。//如果 m=n,则由于两个链表没有公共节点,两个指针也不会同时到达两个链表的尾节点,因此两个指针都会遍历完两个链表,在指针 pA 移动了 m+n 次、指针 pB 移动了 n+m 次之后,两个指针会同时变成空值 null,此时返回 null。

2024-07-21 13:59:22 264

原创 代码随想录|203.移除链表元素 ● 206.反转链表

/给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。while(head!=null&&head.val==val){//先将头结点为val的情况处理。//虚拟头节点法,在head前再添加一个头指针,这样可以使得删除的结点不需要分情况讨论。//当删除节点时,删除头结点和删除后面的节点的方法不一样需要分情况讨论。//剩下的就是内部节点的情况。//给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

2024-07-19 15:31:16 806

原创 代码随想录Day2|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

在一个for循环中j指针不断后移使得子数组相加大于target,满足后记录目前最短的子数组长length,就可以挪动前指针i,缩短子数组长看是否满足相加大于target,最后不断循环返回最短子数组长result。如果不存在符合条件的子数组,返回 0。//给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。// 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

2024-07-18 17:13:45 445

原创 代码随想录第一天| 704. 二分查找、27. 移除元素

写二分法,区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。2.快慢指针法:慢指针指向数组可以覆盖的地方,快指针寻找非移除元素,将非移除元素覆盖到数组前部。1.库函数法:记录除了移除元素以外的元素依次记录,最后从数组头部开始覆盖。二分查找:给定一个递增或递减的数组去找其中一个数。前者while()条件中left可等于right。思路:不断取中点(left+right)/2。后者只能小于right。

2024-07-17 19:50:06 203

空空如也

空空如也

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

TA关注的人

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