自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第二十一天|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

思路:遍历元素出现频率可以将相邻两个元素进行比较,输出出现频率最高的元素。用count存储当前元素出现频率,maxCount存储最大频率,二者进行比较。当count>maxCount的时候,更新maxCount并清空结果集result。思路:遍历过程中遇到p或q返回,对左子树和右子树进行递归操作。左与右的处理逻辑:左右都不为空返回根节点,左为空右不为空返回右节点,左不为空右为空返回左节点。思路:中序遍历,用pre节点记录cur节点的前一个节点的值。

2023-05-01 17:59:23 36

原创 代码随想录算法训练营第二十天|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

思路:递归函数参数传入存放元素的数组,数组下标左区间和右区间,返回根节点。终止条件数组大小为1,遍历到叶子节点。单层递归:找到数组中最大的值和对应的下标, 最大的值构造根节点,下标用来分割数组。

2023-04-27 17:04:15 40

原创 代码随想录算法训练营第十八天|513.找树左下角的值、112. 路径总和、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

思路:确定递归函数的参数和返回值,树的根节点和最大深度为参数,返回值void。当遇到叶子节点统计最大深度。递归过程中使用回溯。

2023-04-25 15:32:26 33

原创 代码随想录算法训练营第十七天|110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

思路:单层递归中的逻辑,先判断左右子树不是平衡二叉树的情况,再判断左右子树是平衡二叉树的情况。当任意节点左右孩子高度差>1时,不符合平衡二叉树条件,结果返回-1,往上一层层返回。(后序遍历)

2023-04-23 17:38:03 41

原创 代码随想录算法训练营第十六天|104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

思路:递归法,采用后序遍历计算树的高度。先求左子树的深度,再求右子树的深度,最后取左右深度最大的数值再+1(中间节点) ,得到根节点的树的深度。

2023-04-21 21:11:27 36

原创 代码随想录算法训练营第十五天|层序遍历、226.翻转二叉树、101. 对称二叉树

左节点和右节点都为空 return true;左节点为空或右节点为空 return false;左节点的值不等于右节点的值 return false。向下一层遍历比较外层与内层是否相同,左节点的左孩子和右节点的右孩子比较;左节点的右孩子和右节点的左孩子比较。思路:定义队列,当根节点不为空,将第一个节点加入队列。定义新的数组,将一层节点放入该数组。遍历当前层元素,将队列弹出元素后存入数组,size--。思路:判断节点是否为null,交换节点的左孩子和右孩子,分别循环调用原函数向左向右遍历。

2023-04-19 23:52:34 33

原创 代码随想录算法训练营第十四天|递归遍历、迭代遍历、统一迭代

思路:1.确定递归函数的参数和返回值、2.确定终止条件、3.确定单层递归的逻辑。前序遍历是中左右、中序遍历是左中右、后序遍历是左右中。

2023-04-19 11:59:32 26

原创 代码随想录算法训练营第11天|20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

思路:遍历s字符串,将字符串s中字符存入ch中,通过匹配左括号将对应的右括号压入栈中。此时要分三种情况。第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符,所以return false。第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。当字符串遍历完之后,栈是空的,return true。

2023-04-16 15:16:23 27

原创 代码随想录算法训练营第十天|232.用栈实现队列、225.用队列实现栈

思路:push操作直接把数据放入输入栈中,pop操作需要判断输出栈是否为空,如果输出栈为空就将输入栈中的数据全部存入输出栈中(输入栈不为空),再从栈中弹出数据。如果输出栈不为空,就直接从输出栈弹出数据。

2023-04-15 00:03:29 27

原创 代码随想录算法训练营第九天|28. 实现 strStr()、459.重复的子字符串

思路:1、计算needle每一位及之前的字符串中,前缀和后缀公共部分的最大长度的next数组;2、匹配needle和haystack,当needle失配时,利用next数组,实现needle的最大后移,从而避免不必要的匹配,减少匹配次数。next数组是needle每一位及之前的字符串中,前缀和后缀公共部分的最大长度的集合。当循环中i=s.length()-1时,若k指向字符串与i指向字符串不相等,k回到前缀的公共前缀处继续比较。

2023-04-14 00:21:52 29

原创 代码随想录算法训练营第八天|344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

思路:定义两个指针(索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。

2023-04-12 22:45:34 27

原创 代码随想录算法训练营第七天|454.四数相加II、83.赎金信、15.三数之和、18.四数之和

思路:采用哈希数组,遍历magazine后将各个元素出现次数存入record,遍历ransomNote将对应字符个数做减法操作,如果数组中存在负数,说明ransomNote字符串中存在magazine没有的字符。思路:将两个数组元素之和及出现次数放入map,统计另外两个元素之和,在map中寻找是否存在两数相加为0的情况,同时记录次数。

2023-04-12 00:35:51 28

原创 代码随想录算法训练营第六天|242.有效的字母异位词、349.两个数组的交集、202. 快乐数、1.两数之和

思路:通过将s[i]-'a'处元素做+1操作统计该处字符出现次数,将其与t字符串各处元素进行对比,做-1操作,当统计出record数组中有不为0的数后返回false。

2023-04-10 23:33:33 35

原创 代码随想录算法训练营第四天|24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题.链表相交、142.环形链表II

1.判断链表是否有环:使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast==slow ,说明这个链表有环。思路:调用for循环使快指针移动n步后,快指针和慢指针同时移动,当快指针下一位指向null时,循环结束,通过slow.next = slow.next.next删除该节点,返回头结点。思路:设置临时节点,将cur节点下一位节点指向2节点,2节点下一位节点指向1节点,cur节点移动两位实现下一轮交换。

2023-04-08 23:33:11 46 1

原创 代码随想录算法训练营第三天|203.移除链表元素、707.设计链表、206.反转链表

定义新指针cur指向头结点,while循环判断新指针cur不为null且cur指针指向的下一位不为null,当cur.next指向的值为输入值时,cur.next.next的地址赋值给cur.next实现删除操作。temp保存cur.next结点,通过cur.next = pre改变cur.next的指向,cur指针向后移动一位,pre指针也向后移动一位。定义当前结点前一个结点指针pre,当前结点指针cur和中转指针temp用于保存结点。1.直接在原链表上进行删除操作、2.设置虚拟头结点进行删除操作。

2023-04-07 23:40:34 37 1

原创 代码随想录算法训练营第二天|977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵Ⅱ

通过一个for循环对窗口的终止位置进行循环,采用while循环判断窗口值之和是否≥s。若成立,窗口进行移动。末位置通过for循环变动,起始位置通过i++来移动。指针指向较大值处,该值传入新定义的数组result,result长度为nums.length,指针向右或左移动一位。通过两个for循环,一个for循环循环数组初始位置,一个for循环循环数组末位置,从而实现区间的搜索。定义新数组arr,给数组赋值count,每条边遍历长度l,i和j。按非递减顺序排序的整数数组,定义双指针从数组左右两边开始比较大小。

2023-04-06 23:23:20 41

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

1.target位于[left,right]区间中时,while(left<=right)中==可以取到;当target<nums[mid]时,target所在区间为[left,mid-1];target>nums[mid]时,target所在区间为[mid+1,right]。2.target位于[left,right)区间中时,while(left<right)中==不可以取到;当target<nums[mid]时,target所在区间为[left,mid);

2023-04-05 23:23:30 256

空空如也

空空如也

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

TA关注的人

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