随笔分类 -  leetcode

力扣刷题过程中……
摘要:题目描述 给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。 子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组 输入:[2,3,4,5] 返回值:4 说明:[2,3,4,5]是最长子数组 阅读全文
posted @ 2023-03-18 18:55 含若飞 阅读(62) 评论(0) 推荐(0)
摘要:题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 思路分析 采用滑动窗口的思想,当前windos中某一个属性次数大于1时就需要缩小窗口 代码参考 co 阅读全文
posted @ 2023-03-18 01:17 含若飞 阅读(22) 评论(0) 推荐(0)
摘要:题目描述 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 输入: s = "cbaebabacd", p = "abc" 输出: [0,6] 解释: 起始索引等于 0 阅读全文
posted @ 2023-03-18 01:14 含若飞 阅读(35) 评论(0) 推荐(0)
摘要:题目描述 给定字符串s1和s2,判断s2是否存在s1的子串 eg: s2:'acbdefa',s1:'db' return:true 思路分析 定长窗口移动,还是采用滑动窗口的思路去解 窗口的right指针依次向右移动,维护一个window和needs 必须是定长窗口,因此当窗口大小应当等于righ 阅读全文
posted @ 2023-03-18 00:36 含若飞 阅读(32) 评论(0) 推荐(0)
摘要:BM90 最小覆盖子串 题目要求 思路分析 使用滑动窗口去解决此类问题。 滑动窗口思路: - 初始化window窗口为长度为0 - 不断的将right指针向右移动 当window中包含所有的目标字符时则为初步完成 - 下一步进行优化,将left指针移动,也就是缩小窗口值,left向右移动 - 直到w 阅读全文
posted @ 2023-03-12 23:32 含若飞 阅读(36) 评论(0) 推荐(0)
摘要:题目描述 全排列,传入数字 输出所有可能出现的情况 思路分析 经典回溯法例题 采用闭包的方式记录总的结果(可以访问外部变量),记录每一层的结果,记录当前的深度,用记事本记录元素是否遍历过 递归退出条件 代码参考 const permute = (nums) => { // 所有的结果 const r 阅读全文
posted @ 2023-01-18 21:21 含若飞 阅读(51) 评论(0) 推荐(0)
摘要:题目要求 题目链接 思路分析 方法一:刚开始做的时候没有什么思路,就采用了最笨的方法 根据中序和先序求出二叉树 得到层序遍历的结果 得到每一层的最后一个元素 方法比较笨拙,但是也回顾了之前所学的一些东西,感兴趣的可以试试。 方法二: 代码参考 const solve = function (xian 阅读全文
posted @ 2023-01-11 13:06 含若飞 阅读(38) 评论(0) 推荐(0)
摘要:题目描述 思路分析 在中序遍历列表中找到先序遍历列表中第一个节点,以此为界限可以将二叉树分为左右子树,可以得知左子树和右子树的长度,在先序遍历列表中划分出来。再依次拿出先序遍历列表中的第一个节点构成左/右子树的根节点,直到传入的先序序列或中序序列为空结束遍历,返回根节点。 代码参考 /* 前序遍历{ 阅读全文
posted @ 2023-01-10 22:26 含若飞 阅读(26) 评论(0) 推荐(0)
摘要:题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 1.对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x,满足x是p和q的祖先且x的深度尽可能大。在这里,一个节点也可以是它自己的祖先. 2.二叉搜索树是若它的左子树不空,则 阅读全文
posted @ 2023-01-10 21:52 含若飞 阅读(85) 评论(0) 推荐(0)
摘要:题目描述 输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 思 阅读全文
posted @ 2023-01-09 23:17 含若飞 阅读(36) 评论(0) 推荐(0)
摘要:题目要求 给定一个二叉树,确定他是否是一个完全二叉树。 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点) 思路分析 可以借助之前层序遍历的思路 再设置一个 阅读全文
posted @ 2023-01-09 22:23 含若飞 阅读(65) 评论(0) 推荐(0)
摘要:题目描述 思路分析 第一种方法:二叉搜索树的中序遍历一定是递增的,只需判断中序遍历的数组即可 第二种方法: - 如果当前节点的值小于左区间或者大于右区间,则返回 false。 - 否则,继续分别递归左右儿子节点: - 递归左儿子,并将左儿子的右区间修改为父节点的值; - 递归右儿子,并将右儿子的左区 阅读全文
posted @ 2023-01-03 13:55 含若飞 阅读(26) 评论(0) 推荐(0)
摘要:题目描述 思路分析 采用递归的方法,对每一个节点做相同的处理,交换节点位置,也就类似于我们交换两个变量的值一样,需要借助一个临时变量。 递归: - 传递过来的节点需要做什么 - 递归退出条件 - 之后如何递归 代码参考 const Mirror = function (root) { if (!ro 阅读全文
posted @ 2023-01-03 09:59 含若飞 阅读(42) 评论(0) 推荐(0)
摘要:题目描述 已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如: 两颗二叉树是: tree1 tree2 合并后的树 牛客原题 思路分析 采用递归的方法,因为每一个节点都在做重复的事 思考每次应该做什么 - 接收两个指针,也就 阅读全文
posted @ 2023-01-03 09:47 含若飞 阅读(30) 评论(0) 推荐(0)
摘要:题目描述 思路分析 使用递归的方法,每次传递镜像的节点进去,compare函数专门用于比对,对不同的条件做不同的处理 代码参考 const isSymmetrical = function (pRoot) { // write code here if (!pRoot) return true co 阅读全文
posted @ 2023-01-02 22:39 含若飞 阅读(23) 评论(0) 推荐(0)
摘要:原题链接 思路分析 通过给定的返回值我们就可以发现双向链表遍历的结果顺序是中序遍历。那么我们就可以先利用之前中序遍历的方法,获取到每个节点,再遍历每个节点,将它们的指向进行更改即可,需要注意的是要对第一个和最后一个节点做处理 代码参考 // 使用中序遍历获得结果,之后再对每一个节点做处理 funct 阅读全文
posted @ 2023-01-02 21:56 含若飞 阅读(28) 评论(0) 推荐(0)
摘要:题目描述 思路分析 采用递归的方法,左(右)子树的sum = sum - root.val。 每次都减去当前的root值,如果左子树或者右子树的节点值等于sum,则说明找到了,返回true,否则当root为空时,退出当前递归,说明找不到,返回false 代码参考 // 传递过来的每一个节点,我们都要 阅读全文
posted @ 2023-01-02 21:23 含若飞 阅读(20) 评论(0) 推荐(0)
摘要:题目描述 思路分析 这题在上一道 层序遍历的基础上会更加方便。我们之前就可以得到每一层的数据,此时只是对每一层的遍历顺序做相应的处理即可 注意: 1. 我们在向tempQueue中添加元素时使用的是push ,比如我们一棵树的某一层从左到右的结果依次是 2 4 6 8,那么我们依次添加到tempQu 阅读全文
posted @ 2023-01-01 23:05 含若飞 阅读(25) 评论(0) 推荐(0)
摘要:题目描述 思路分析 外部使用一个容器来存储,借助一个临时的栈来存储每一层的节点,之后根绝临时栈不为空的条件来遍历每一层,并将结果存到容器中 代码参考 /* 给定一个二叉树,返回该二叉树的之字形层序遍历, (第一层从左向右,下一层从右向左,一直这样交替) */ const Print = functi 阅读全文
posted @ 2023-01-01 22:04 含若飞 阅读(21) 评论(0) 推荐(0)
摘要:题目要求 给你二叉树的根节点 root ,返回它节点值的 前序、中序、后序 遍历的结果。 思路分析 主要用递归的知识,思考,如果传递了一个节点过来我们需要做什么。 如果传递过来了一个节点,这个节点可能还包含有左子树右子树,什么时候是递归的终止条件 步骤: 1. 先判断传递过来的节点是否为空,为空则r 阅读全文
posted @ 2023-01-01 21:55 含若飞 阅读(34) 评论(0) 推荐(0)