03 2023 档案
摘要:#对称二叉树 本质是比较两个树。遍历两课树而且要比较内测和外侧节点, 所以准确的来说是一个树的遍历顺序是左右中,另个一顺序是右左中。 递归法的第二部:确定终止条件里面情况较复杂; 第三步即:处理内外侧节点是否相等 #二叉树的最大深度 注意:只用前序是☞深度,使用后序是指高度。 而根节点的高度即二叉树
阅读全文
摘要:#104.二叉树的最大深度 题目链接:104.二叉树的最大深度 题目描述:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点 示例: 给定二叉树 [3,9,20,null,null,15,7], 示例: 给定二叉树 [3,
阅读全文
摘要:#二叉树的层序遍历 题目链接:二叉树的层序遍历 题目描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点 ``` 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] ``` ##思路 学会二叉树的
阅读全文
摘要:#二叉树理论基础篇 ##二叉搜索树 前面介绍的树,都没有数值的,而二叉搜索树是有数值的了,二叉搜索树是一个有序树。 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树 ##二叉树的存储方式
阅读全文
摘要:#239. 滑动窗口最大值 题目链接:239. 滑动窗口最大值 题目描述:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 ``` 输入:nums = [1,3,-1,
阅读全文
摘要:#232.用栈实现队列 题目链接:232.用栈实现队列 ##思路 使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈一个输入栈,一个输出栈,这里要注意输入栈和输出栈的关系。 在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数
阅读全文
摘要:#05.替换空格 题目链接:05.替换空格 题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." ##思路 本题最好不要使用额外的辅助空间 首先扩充数组到每个空格替换成"%20"
阅读全文
摘要:#第18题. 四数之和 题目链接:第18题. 四数之和 题目描述:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 示例:
阅读全文
摘要:#环形链表 题目链接:142、环形链表Ⅱ 题目描述:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 输入:head = [3,
阅读全文
摘要:#第454题.四数相加II 题目链接:第454题.四数相加II 题目描述:给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 输入: 输出: 2 A = [ 1, 2] B = [
阅读全文
摘要:#202. 快乐数 题目链接:202. 快乐数 题目描述:编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。
阅读全文
摘要:#哈希表理论基础 我们知道数组其实就是一张哈希表,那么哈希表一般可以解决什么问题? 一般哈希表都是用来快速判断一个元素是否出现在集合里 例如要查询一个名字是否在这所学校里。 要枚举的话时间复杂度是O(n),但如果使用哈希表的话, 只需要O(1)就可以做到。 我们只需要初始化把这所学校里学生的名字都存
阅读全文
摘要:#24. 两两交换链表中的节点 题目链接:24. 两两交换链表中的节点 题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:
阅读全文
摘要:#链表理论基础 链表是一种由指针串联在一起的线性结构,每一个节点都由一个数据域和一个指针域组成。 链表的类型有:单链表、双链表、循环链表。 链表的存储方式:在内存中不连续分布。 链表的定义很多人因为不重视而忽略,手写就显得很重要,如下所示: // 单链表 struct ListNode { int
阅读全文