LCR(剑指offer)
剑指offer
春雨晚来秋
这个作者很懒,什么都没留下…
展开
-
LCR 194. 二叉树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(b、p 、q 两节点都在 root 的右子树中,此时的right指向最近公共祖先节点;2、当left和right都不为空时,即p、q在root的左右子树中,root为最近公共祖先,返回root。1、当left和right都为空时,即root的左(右)子树中都不含有p、q,直接返回null。4、当right为空,left不为空时,与3同理,返回left。原创 2024-02-28 10:07:36 · 267 阅读 · 0 评论 -
LCR 193. 二叉搜索树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(根据(p->val - root->val) * (q->val - root->val)原创 2024-02-27 21:25:51 · 407 阅读 · 0 评论 -
LCR 189. 设计机械累加器 (算术右移)
注意这是一个只能进行加法操作的程序,不具备乘除、if-else、switch-case、for 循环、while 循环,及条件判断语句等高级功能。请设计一个机械累加器,计算从 1、2... 一直累加到目标数值。原创 2024-02-29 15:10:01 · 240 阅读 · 0 评论 -
LCR 184. 设计自助结算系统(队列+双端队列)
3、双端队列保存的时当前队列的最大值,当队列出队时,判断出对元素是否与双端队列队首元素相等,相等则同样出队,否则不变。在每次入队时,如果队尾元素小于即将入队的元素,则将小于的元素全部出队后,再入队;2、双端队列实现获取当前队列最大值的作用,具体来说,队列入队时,双端队列也入队,但。:移除第一个待结算的商品价格,如果队列为空,则返回 -1。:获取结算商品中的最高价格,如果队列为空,则返回 -1。输出: [null,null,null,7,4,7]输出: [null,-1,-1]1、队列实现入队出队操作。原创 2024-03-12 10:39:15 · 289 阅读 · 0 评论 -
LCR 183. 望远镜中最高的海拔(双端队列)
科技馆内有一台虚拟观景望远镜,它可以用来观测特定纬度地区的地形情况。该纬度的海拔数据记于数组。滑动窗口的位置 最大值。表示对应位置的海拔高度。请找出并返回望远镜视野范围。内,可以观测到的最高海拔值。原创 2024-03-12 16:24:58 · 968 阅读 · 0 评论 -
LCR 181. 字符串中的单词反转(栈+串流的输入操作istringstream)
你在与一位习惯从右往左阅读的朋友发消息,他发出的文字顺序都与正常相反但单词内容正确,为了和他顺利交流你决定写一个转换程序,把他所发的消息。中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。中包含英文大小写字母、空格和数字。原创 2024-03-13 15:51:05 · 187 阅读 · 0 评论 -
LCR 179. 查找总价格为目标值的两个商品(二分查找)
请在购物车中找到两个商品的价格总和刚好是。购物车内的商品价格按照升序记录于数组。若存在多种情况,返回任一结果即可。[27,34] 或者 [34,27][3,15] 或者 [15,3]原创 2024-03-14 10:10:34 · 124 阅读 · 0 评论 -
LCR 176. 判断是否为平衡二叉树 (后序遍历算深度,先序遍历判平衡)
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。原创 2024-03-01 14:53:29 · 310 阅读 · 0 评论 -
LCR 175. 计算二叉树的深度 (深度优先遍历、后序遍历)
上面示例中的二叉树的最大深度是 4,沿着路径 1 -> 2 -> 3 -> 4 或 1 -> 2 -> 5 -> 4 到达叶节点的最长路径上有 4 个节点。某公司架构以二叉树形式记录,请返回该公司的层级数。1、递归左子树,返回值记为left。2、递归右子树,返回值记为right。原创 2024-02-29 15:39:26 · 298 阅读 · 0 评论 -
LCR 174. 寻找二叉搜索树中的目标节点 (二叉搜索树中序遍历+回溯)
某公司组织架构以二叉搜索树形式记录,节点值为处于该职位的员工编号。2、判断cnt是否为0,是则赋值res,直接返回。1 ≤ cnt ≤ 二叉搜索树元素个数。结点为空或已经找到目标结点。3、不是则继续递归左子树。原创 2024-03-01 15:36:30 · 316 阅读 · 0 评论 -
LCR 173. 点名(二分查找)
某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组。假定仅有一位同学缺席,请返回他的学号。原创 2024-03-07 11:12:06 · 254 阅读 · 0 评论 -
LCR 172. 统计目标成绩的出现次数(二分查找)
某班级考试成绩按非严格递增顺序记录于整数数组。原创 2024-03-07 21:13:02 · 189 阅读 · 0 评论 -
LCR 171. 训练计划 V(双指针)
第一个正式训练项目编号为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 B 中,相交节点前有 3 个节点。第一个正式训练项目编号为 2 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。在 B 中,相交节点前有 1 个节点。从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。- 相交的起始节点的值。原创 2024-03-19 10:44:49 · 547 阅读 · 0 评论 -
LCR 169. 招式拆解 II(数组两次遍历)
请返回第一个只出现一次的招式名称,如不存在请返回空格。某套连招动作记作仅由小写字母组成的序列。原创 2024-03-06 09:53:16 · 270 阅读 · 0 评论 -
LCR 155. 将二叉搜索树转化为排序的双向链表 (二叉搜索树中序遍历)
除了刚开始,我们让pre右子树(后继)等于root,root的左子树(前驱)等于pre,即完成有序双向链表的建立。对于双向循环列表,你可以将左右孩子指针作为双向循环链表的前驱和后继指针,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。6、最后pre指向最大结点处,我们让pre后继指向head,head前驱指向pre,返回head,完成!2、分别定义一个空的前驱结点pre和一个空的需要返回的头结点head。原创 2024-03-02 16:01:51 · 317 阅读 · 0 评论 -
LCR 153. 二叉树中和为目标值的路径 (深度优先遍历、先序遍历+回溯剪枝)
3、满足2则把临时数组加入结果数组末尾,不满足则递归左子树、右子树。1、targert减去当前结点值,当前结点值加入临时数组末尾。4、进行回溯剪枝操作,删除临时数组末尾元素,进入其他分支。2、判断target是否为0、当前结点左右子树是否为空。路径总和等于给定目标和的路径。是指没有子节点的节点。原创 2024-03-03 19:21:55 · 181 阅读 · 0 评论 -
LCR 151. 彩灯装饰记录 III (二叉树的层次遍历、二叉树的广度优先遍历+以层为单位+正反交替记录)
2、依次将队首元素不为空的左子树、右子树插入队尾(下一层先左子树后右子树顺序存放至队尾)。2、依次将队首元素不为空的右子树、左子树插入队首(下一层先右子树后左子树逆序存放至队首)。的二叉树,节点值为该位置装饰彩灯的颜色编号。(在循环体外部创建临时数组会导致开始遍历当前层次时临时数组不为空)根据当前队列长度size大小从前往后遍历当前层次结点。根据当前队列长度size大小从后往前遍历当前层次结点。计算当前队列长度size,创建临时数组。1、队首元素插入临时数组尾部。1、队尾元素插入临时数组尾部。原创 2024-02-28 15:53:48 · 367 阅读 · 0 评论 -
LCR 150. 彩灯装饰记录 II (二叉树的层次遍历、二叉树的广度优先遍历+以层为单位记录)
的二叉树,节点值为该位置装饰彩灯的颜色编号。请按照从左到右的顺序返回每一层彩灯编号,每一层的结果记录于一行。(在循环体外部创建临时数组会导致开始遍历当前层次时临时数组不为空)根据当前队列长度size大小遍历当前层次结点。2.依次将队首元素不为空的左子树、右子树入队。计算当前队列长度size,创建临时数组。1.队首元素插入临时数组尾部。一棵圣诞树记作根节点为。原创 2024-02-28 11:19:32 · 254 阅读 · 0 评论 -
LCR 149. 彩灯装饰记录 I (二叉树的层次遍历、二叉树的广度优先遍历)
的二叉树,节点值为该位置装饰彩灯的颜色编号。的顺序返回每一层彩灯编号。一棵圣诞树记作根节点为。原创 2024-02-28 10:50:30 · 242 阅读 · 0 评论 -
LCR 148. 验证图书取出顺序(栈)
是否为按照正确的顺序拿取书籍的操作序列。你可以假设放入书架的所有书籍编号都不相同。现在图书馆有一堆图书需要放入书架,并且图书馆的书架是一种特殊的数据结构,只能按照。给定一个表示图书放入顺序的整数序列。6 不能在 7 之前取出。原创 2024-03-11 11:22:21 · 339 阅读 · 0 评论 -
LCR 147. 最小栈
2、先向最小栈中push一个最大值,接着正常栈push时,最小栈将对栈顶元素进行判断,大于等于栈顶元素则再将栈顶元素进栈一次,小于则push进栈元素。--> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();1、定义两个栈,一个正常栈,另一个栈保存正常栈中的最小元素。操作,并能在常数时间内检索到最小元素的栈。3、两个栈同时pop。原创 2024-03-13 10:25:18 · 204 阅读 · 0 评论 -
LCR 146. 螺旋遍历二维数组
提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。:从左上角开始,按照。原创 2024-03-11 16:30:57 · 197 阅读 · 0 评论 -
LCR 145. 判断对称二叉树 (递归)
一个结点不为空,另一个结点为空,返回false。两个节点都不为空,但值不一样,返回false。请设计一个函数判断一棵二叉树是否。从图中可看出最后一层的节点不对称。从图中可看出树是轴对称的。两个结点都为空返回true。原创 2024-03-03 20:49:51 · 151 阅读 · 0 评论 -
LCR 144. 翻转二叉树(DFS)
请左右翻转这棵二叉树,并返回其根节点。给定一棵二叉树的根节点。原创 2024-03-05 10:04:45 · 116 阅读 · 0 评论 -
LCR 143. 子结构判断(DFS)
如果A结点的值等于B结点,则进入函数isAhasB进行判断,返回值记为res。如果返回值res为false,表明以此结点为根还不是子树。递归tree1的左子树,继续查找,返回值赋给res,如果res还为false,则再递归右子树。tree2 与 tree1 的一个子树拥有相同的结构和节点值。B为空则直接返回true,否则A为空或者A的值不等于B的值直接返回false。tree2 与 tree1 的一个子树没有相同的结构和节点值。深度优先遍历,检查两棵树的左子树、右子树是否符合要求。两个递归工作的返回值。原创 2024-03-05 11:13:59 · 298 阅读 · 0 评论 -
LCR 142. 训练计划 IV(链表双指针)
分别记录了两套核心肌群训练项目编号,请合并这两个训练计划,按训练项目编号。2、采用尾插法,定义两个指针遍历两个链表,将小的结点添加到r的next。:新链表是通过拼接给定的两个链表的所有节点组成的。1、先定义一个头结点res用来返回,用r指向它。3、最后将遍历完还不为空的链表添加到尾部。4、返回res的下一个结点。原创 2024-03-14 11:04:19 · 198 阅读 · 0 评论 -
LCR 141. 训练计划 III(头插法建立链表、双指针)
的单链表用于记录一系列核心肌群训练编号,请将该系列训练编号。链表中节点的数目范围是。原创 2024-03-14 10:48:07 · 152 阅读 · 0 评论 -
LCR 140. 训练计划 II(快慢双指针)
的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第。原创 2024-03-14 10:28:58 · 140 阅读 · 0 评论 -
LCR 139. 训练计划 I(双指针)
记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以。原创 2024-03-14 10:20:50 · 121 阅读 · 0 评论 -
LCR 130. 衣橱整理 (深度优先遍历DFS)
2、因为不能重复整理,且题目没有定义二维数组只是给了二维数组的行列,因此我们需要自己定义一个二维数组用来标记哪些格子已经整理过,初始化为符号‘0’。i、j越界或该元素已经遍历过或digit函数不满足小于等于cnt。把该位置为‘1’,表示已经整理,继续向右和向下递归。,但不能移动到衣柜之外。3、从头([0][0])开始DFS递归遍历。代表一个需要整理的格子。整理规则为:在整理过程中,可以选择。返回值为1加上向右和向下递归的结果。1、定义digit函数,实现数字。家居整理师将待整理衣橱划分为。原创 2024-03-04 15:33:22 · 363 阅读 · 1 评论 -
LCR 129. 字母迷宫 (深度优先遍历DFS+回溯剪枝)
2、DFS递归当前元素的四个方向,返回值(bool类型)记为tmp,四个方向的关系为或,即一个方向走得通就可以。按照字母顺序,通过水平或垂直方向相邻的单元格内的字母构成,同时,同一个单元格内的字母。1、已经走过的字符我们让其等于字符‘0’来进行标记。3、回溯剪枝,不管当前元素行不行得通,将其恢复原样。字母迷宫游戏初始界面记作。仅由大小写英文字母组成。,请判断玩家是否能在。原创 2024-03-04 10:15:51 · 461 阅读 · 1 评论 -
LCR 128. 库存管理 I(二分查找)
现因突发情况需要进行商品紧急调拨,管理员将这批商品。提前依次整理至库存表最后。请你找到并返回库存表中编号的。以便及时记录本次调拨。形式记录商品库存表。原创 2024-03-06 11:09:50 · 279 阅读 · 0 评论 -
LCR 125. 图书整理 II(队列、先进先出)
读者来到图书馆排队借还书,图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放,图书管理员每次只能拿取书车顶部的书。为了保持图书的顺序,图书管理员每次取出供读者借阅的书籍是。归还到图书馆的书籍。如果没有归还的书可以取出,返回。:把借阅的书籍还到图书馆。:从图书馆中借出书籍。原创 2024-03-13 10:47:13 · 287 阅读 · 0 评论 -
LCR 123. 图书整理 I(逆置链表)
书店店员有一张链表形式的书单,每个节点代表一本书,节点中的值表示书的编号。为更方便整理书架,店员需要将书单倒过来排列,就可以从最后一本书开始整理,逐一将书放回到书架上。请倒序返回这个书单链表。输入:head = [3,6,4,1]输出:[1,4,6,3]原创 2024-03-13 10:35:01 · 210 阅读 · 0 评论 -
LCR 121. 寻找目标值 - 二维数组
每行中,每棵植物的右侧相邻植物不矮于该植物;每列中,每棵植物的下侧相邻植物不矮于该植物。中是否存在目标高度值。原创 2024-03-07 10:13:33 · 225 阅读 · 0 评论 -
LCR 120. 寻找文件副本(数组)
相同,则定义为该文件存在副本。请返回任一存在副本的文件。原创 2024-03-11 10:44:54 · 212 阅读 · 0 评论