![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
剑指offer刷题 笔记记录
不会敲代码的车手
这个作者很懒,什么都没留下…
展开
-
第十九题 剑指 Offer 68 - II. 二叉树的最近公共祖先
剑指 Offer 68 - II. 二叉树的最近公共祖先题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例1:输入: root = [3,5,1,6,2,0,8,null,null,7,4],原创 2021-08-26 18:19:59 · 51 阅读 · 0 评论 -
第十八题 剑指 Offer 26. 树的子结构
剑指 Offer 26. 树的子结构题目描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:示例1输入:A = [1,2,3], B = [3,1]输出:false示例2输入:A = [3,4,5,1,2], B = [4,1]输出:true限制0 <= 节点个数 <= 10000思路DFS判别传入的参数中 B树中的节点是否为空 为空则返回原创 2021-08-26 00:54:41 · 51 阅读 · 0 评论 -
第十七题 剑指 Offer 34. 二叉树中和为某一值的路径
剑指 Offer 34. 二叉树中和为某一值的路径题目描述输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例给定如下二叉树,以及目标和 target = 22,返回:提示节点总数 <= 10000思路注意这里的路径是指:一直从根节点一直走到最后的节点(该节点没有子节点)举个例子:以上面的树为例 target的值为26时 路径为 [[5,8,13]] 但target 为 17时 明明可以走:5-原创 2021-08-25 00:36:17 · 43 阅读 · 0 评论 -
第十六题 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例1:输入: root = [6,2,8,0,4,7,9,null,null,原创 2021-08-24 00:39:20 · 51 阅读 · 0 评论 -
第十五题 剑指 Offer 55 - II. 平衡二叉树
剑指 Offer 55 - II. 平衡二叉树题目描述输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例1给定二叉树 [3,9,20,null,null,15,7]返回true示例2给定二叉树 [1,2,2,3,3,null,null,4,4]返回false限制0 <= 树的结点个数 <= 10000思路用递归进行搜索定义两个变量用于记录 左右子树的深度 左:lDep原创 2021-08-22 20:53:19 · 68 阅读 · 0 评论 -
十四题 剑指 Offer 54. 二叉搜索树的第k大节点
剑指 Offer 54. 二叉搜索树的第k大节点题目描述给定一棵二叉搜索树,请找出其中第k大的节点。示例1:实例2限制1 ≤ k ≤ 二叉搜索树元素个数思路DFS右-中-左遍历二叉树节点的右子树比左子树大应该从二叉树的右子树开始搜索,直至没右节点为止通过递归 先找到右子树的最深层的右节点从右子树的最深层的右节点 通过k自减往回寻找代码/** * Definition for a binary tree node. * function TreeNode(val) {原创 2021-08-21 20:10:48 · 39 阅读 · 0 评论 -
十三题 剑指 Offer 13. 机器人的运动范围
剑指 Offer 13. 机器人的运动范围题目描述地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例1:输入:m = 2, n = 3, k原创 2021-08-21 17:28:12 · 47 阅读 · 0 评论 -
第十二题 剑指 Offer 32 - I. 从上到下打印二叉树
剑指 Offer 32 - I. 从上到下打印二叉树题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],返回:提示:节点总数 <= 1000思路今天连续开三个会讨论比赛,比较忙所以挑一题简单的BFS来做,每天打卡不能掉线,太累了 ,今天先水一题,巩固一下BFS的用法。BFS通过模拟队列进行搜索/** * Definition for a binary tree node. *原创 2021-08-19 23:57:40 · 116 阅读 · 1 评论 -
第十一 剑指 Offer 27. 二叉树的镜像
剑指 Offer 27. 二叉树的镜像题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:镜像输出:示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]限制:0 <= 节点个数 <= 1000思路用一个模拟队列访问到树的每一节点自定义一个交换函数 swap let swap = function(node){ [node.left, node.right] = [node原创 2021-08-18 20:47:39 · 48 阅读 · 0 评论 -
第十题 剑指 Offer 28. 对称的二叉树
剑指 Offer 28. 对称的二叉树题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false限制0 <= 节点个数 <=原创 2021-08-17 23:09:57 · 47 阅读 · 0 评论 -
第九题 剑指 Offer 32 - II. 从上到下打印二叉树 II
剑指 Offer 32 - II. 从上到下打印二叉树 II题目描述从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[ [3], [9,20], [15,7] ]提示节点总数 <= 1000思路BFSqueue数组: 模拟队列res数组:存放结果temp数组:存放每一层的节点数据root的根结点入队遍历队列 将队列的元素逐一出队原创 2021-08-16 23:53:48 · 99 阅读 · 1 评论 -
第八题 剑指 Offer 55 - I. 二叉树的深度
剑指 Offer 55 - I. 二叉树的深度题目描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。提示节点总数 <= 10000思路这周开始的话主要是学BFS,用DFS解题更快,更简单,且易理解,但这题还是使用BFS方法进行解题BFS根据二叉树定义数据结构:let root = { val:原创 2021-08-16 21:41:46 · 52 阅读 · 0 评论 -
第四题 剑指offer53- II. 0~n-1中缺失的数字
剑指 Offer 53 - II. 0~n-1中缺失的数字题目描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例1输入: [0,1,3]输出: 2示例2输入: [0,1,2,3,4,5,6,7,9]输出: 8限制1 <= 数组长度 <= 10000思路误区直接二分法查找,找出: 数组元素!===元素索引值 直接返回开始时理解错了,过了原创 2021-08-13 18:57:28 · 78 阅读 · 0 评论 -
第三题 剑指offer 53 在排序数组中查找数字
剑指 Offer 53 - I. 在排序数组中查找数字 I题目描述统计一个数字在排序数组中出现的次数示例1输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例2输入: nums = [5,7,7,8,8,10], target = 6输出: 0提示0 <= nums.length <= 10^5-10^9 <= nums[i] <= 10 ^9.nums 是一个非递减数组-10^ 9 <= target &原创 2021-08-13 18:34:53 · 48 阅读 · 0 评论 -
第二题 剑指offer57
剑指offer 57. 和为s的两个数字题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]限制:1 <= nums.length <= 10^原创 2021-08-10 17:55:32 · 84 阅读 · 0 评论 -
第一题 剑指offer 17
打印从1到最大的n位数题目描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例1输入: n = 1输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印n 为正整数思路第一天刷题,主要想跟着小队一起,从养成刷题习惯开始,选择一题简单的hello world级别的题目作为开胃菜,增强自己刷题的兴趣,刷题顺序的是按照剑指offer的电子书的内容出现的问题顺序的。思路一:暴力解法原创 2021-08-09 21:21:08 · 71 阅读 · 0 评论