程序员面试金典
叶落雨飘
emmmmm 我是一只小萌新~
展开
-
[算法练习及思路-程序员面试金典(Java解法)]No105.单词转换
题号:no105题目名:单词转换原题URL:https://leetcode-cn.com/problems/word-transformer-lcci/题目描述给定字典中的两个词,长度相等。写一个方法,把一个词转换成另一个词, 但是一次只能改变一个字符。每一步得到的新词都必须能在字典中找到。编写一个程序,返回一个可能的转换序列。如有多个可能的转换序列,你可以返回任何一个。示例示例 1:输入:beginWord = "hit",endWord = "cog",wordList = ["原创 2020-12-13 16:15:10 · 242 阅读 · 0 评论 -
[算法练习及思路-leetcode每日一题(Java解法)]No376.摆动序列
题号:no376题目名:摆动序列原题URL:https://leetcode-cn.com/problems/wiggle-subsequence/题目描述如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它原创 2020-12-12 15:44:46 · 144 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No90.婴儿名字
题号:no90题目名:婴儿名字原题URL:https://leetcode-cn.com/problems/baby-names-lcci/题目描述每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量。有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来。给定两个列表,一个是名字及对应的频率,另一个是本质相同的名字对。设计一个算法打印出每个真实名字的实际频率。注意,如果 John 和 Jon 是相同的,并且 Jon 和 Johnny原创 2020-12-12 15:14:30 · 185 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No97.最小K个数
题号:no97题目名:最小K个数原题URL:https://leetcode-cn.com/problems/smallest-k-lcci/题目描述设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例示例 1:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]限制0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))思路1.最大优先队列原创 2020-12-11 16:41:04 · 137 阅读 · 0 评论 -
[算法练习及思路-leetcode每日一题(Java解法)]No649.Dota2 参议院
题号:no649题目名:Dota2 参议院原题URL:https://leetcode-cn.com/problems/dota2-senate/题目描述Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。原创 2020-12-11 16:05:52 · 166 阅读 · 1 评论 -
[算法练习及思路-leetcode每日一题(Java解法)]No300.最长上升子序列
题号:no300题目名:最长上升子序列原题URL:https://leetcode-cn.com/problems/longest-increasing-subsequence/题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。示例示例 1:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。限制可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2原创 2020-12-11 15:31:03 · 147 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No96.恢复空格
题号:no96题目名:恢复空格原题URL:https://leetcode-cn.com/problems/re-space-lcci/题目描述哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些原创 2020-12-11 11:54:29 · 211 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No95.BiNode
题号:no95题目名:BiNode原题URL:https://leetcode-cn.com/problems/binode-lcci/题目描述二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。返回转换后的单向链表的头节点。示例示例 1:输入: [4,2,5,1,3,null,6,0]输出: [0,null,1,nu原创 2020-12-10 17:39:28 · 138 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No94.单词距离
题号:no94题目名:单词距离原题URL:https://leetcode-cn.com/problems/string-rotation-lcci/题目描述有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?示例示例 1:输入:words = ["I","am","a","student","from","a","university","in","a","city"],原创 2020-12-10 17:09:13 · 215 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No93.主要元素
题号:no93题目名:主要元素原题URL:https://leetcode-cn.com/problems/find-majority-element-lcci/题目描述数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1限制你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内完成吗?思路1.摩尔投票法,剩下到最后一个的原创 2020-12-10 16:19:44 · 104 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No92.第 k 个数
题号:no92题目名:第 k 个数原题URL:https://leetcode-cn.com/problems/get-kth-magic-number-lcci/题目描述有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。示例 1:输入: k = 1输出: 1示例 2:输入: k = 5输出: 9思路按照题意要求,可以将因子拆成1,3,5,7,原创 2020-12-10 15:52:47 · 117 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No91.马戏团人塔
题号:no91题目名:马戏团人塔原题URL:https://leetcode-cn.com/problems/circus-tower-lcci/题目描述有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上。出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一点。已知马戏团每个人的身高和体重,请编写代码计算叠罗汉最多能叠几个人。示例示例 1:输入:height = [65,70,56,75,60,68] weight = [100,150,90,190,95,110]输出:6原创 2020-12-10 15:27:08 · 264 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No85计算器
题号:no85题目名:计算器原题URL:https://leetcode-cn.com/problems/calculator-lcci/题目描述给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例 1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5限制原创 2020-12-09 15:35:30 · 226 阅读 · 1 评论 -
[算法练习及思路-leetcode每日一题(Java解法)]No861.翻转矩阵后的得分
题号:no861题目名:翻转矩阵后的得分原题URL:https://leetcode-cn.com/problems/score-after-flipping-matrix/题目描述有一个二维矩阵 A 其中每个元素的值为 0 或 1 。移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。返回尽可能高的分数。示例示例 1:输入:[[0,0,1,1]原创 2020-12-07 21:26:37 · 164 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No83数对和
题号:no83题目名:数对和原题URL:https://leetcode-cn.com/problems/pairs-with-sum-lcci/题目描述设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。示例示例 1:输入: nums = [5,6,5], target = 11输出: [[5,6]]示例 2:输入: nums = [5,6,5,6], target = 11输出: [[5,6],[5,6]]限制nums.length <=原创 2020-12-06 19:55:24 · 100 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No81交换和
题号:no81题目名:交换和原题URL:https://leetcode-cn.com/problems/sum-swap-lcci/题目描述给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。示例示例 1:输入: array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6,原创 2020-12-06 19:12:05 · 149 阅读 · 1 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No80T9键盘
题号:no80题目名:T9键盘原题URL:https://leetcode-cn.com/problems/t9-lcci/题目描述在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。示例示例 1:输入: num = "8733", words = ["tree", "used"]输出: ["tree", "used"]示例 2:输入: num = "原创 2020-12-06 17:13:07 · 403 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No77连续数列
题号:no77题目名:连续数列原题URL:https://leetcode-cn.com/problems/contiguous-sequence-lcci/题目描述给定一个整数数组,找出总和最大的连续数列,并返回总和。示例示例 1:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。限制如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路1.遍历数组,如果当前值加前面的累计值大于原创 2020-12-06 16:52:10 · 247 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No79水域大小
题号:no79题目名:水域大小原题URL:https://leetcode-cn.com/problems/pond-sizes-lcci/题目描述你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。示例示例 1:输入:[ [0,2,1,0], [0,1,0,1], [1,1,0,1], [原创 2020-12-06 16:48:57 · 288 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No71生存人数
题号:no71题目名:生存人数原题URL:https://leetcode-cn.com/problems/living-people-lcci/题目描述给定 N 个人的出生年份和死亡年份,第 i 个人的出生年份为 birth[i],死亡年份为 death[i],实现一个方法以计算生存人数最多的年份。你可以假设所有人都出生于 1900 年至 2000 年(含 1900 和 2000 )之间。如果一个人在某一年的任意时期处于生存状态,那么他应该被纳入那一年的统计中。例如,生于 1908 年、死于 1原创 2020-12-05 19:26:10 · 274 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No66阶乘尾数
题号:no66题目名:阶乘尾数原题URL:https://leetcode-cn.com/problems/factorial-zeros-lcci/题目描述设计一个算法,算出 n 阶乘有多少个尾随零。示例示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.限制说明: 你算法的时间复杂度应为 O(log n) 。思路计算里面的5的个数就可以解题代码public clas原创 2020-12-04 14:21:37 · 187 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No62交换数字
题号:no62题目名:交换数字原题URL:https://leetcode-cn.com/problems/swap-numbers-lcci/题目描述编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例示例 1:输入: numbers = [1,2]输出: [2,1]限制numbers.length == 2思路1.加减法,就是倒水的原理,先把所有水倒在一个桶子,当做临时变量,然后去加减运算2.异或运算,运用其性质解题代码class S原创 2020-12-03 12:39:02 · 98 阅读 · 1 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No59.排序矩阵查找
题号:no59题目名:排序矩阵查找原题URL:https://leetcode-cn.com/problems/sorted-matrix-search-lcci/题目描述给定M×N矩阵,每一行、每一列都按升序排列,请编写代码找出某元素。示例示例 1:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]原创 2020-12-02 21:41:23 · 112 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No61.峰与谷
题号:no61题目名:峰与谷原题URL:https://leetcode-cn.com/problems/peaks-and-valleys-lcci/题目描述在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例示例 1:输入: [5, 3, 1, 2, 3]输出: [5, 1, 3, 2, 3]原创 2020-12-01 18:20:12 · 249 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No57.搜索旋转数组
题号:no57题目名:搜索旋转数组原题URL:https://leetcode-cn.com/problems/search-rotate-array-lcci/题目描述搜索旋转数组。给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详。请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素,返回索引值最小的一个。示例示例 1: 输入: arr = [15, 16, 19, 20, 25, 1, 3, 4, 5, 7, 10, 14], targ原创 2020-11-29 17:03:35 · 129 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No56.变位词组
题号:no56题目名:变位词组原题URL:https://leetcode-cn.com/problems/group-anagrams-lcci/题目描述编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。**注意:**本题相对原题稍作修改示例示例 1:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"],原创 2020-11-29 15:27:59 · 134 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No55.合并排序的数组
题号:no55题目名:合并排序的数组原题URL:https://leetcode-cn.com/problems/sorted-merge-lcci/题目描述给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例示例 1:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]限制原创 2020-11-29 14:56:05 · 133 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No51.硬币(完全背包问题+优化空间)
题号:no51题目名:硬币原题URL:https://leetcode-cn.com/problems/coin-lcci/题目描述硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例示例 1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例 2: 输入: n = 10 输出:4 解释: 有四种方式可以凑成总金额:10=101原创 2020-11-26 17:51:27 · 150 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No50.颜色填充
题号:no50题目名:颜色填充原题URL:https://leetcode-cn.com/problems/color-fill-lcci/题目描述编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的横坐标为 sr 纵坐标为 sc。需要填充的新颜色为 newColor 。「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。示例示例 1:原创 2020-11-26 15:22:38 · 210 阅读 · 1 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No49.括号(全排列)
题号:no49题目名:括号(全排列)原题URL:https://leetcode-cn.com/problems/bracket-lcci/题目描述括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。说明:解集不能包含重复的子集。示例示例 1:例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路1.回溯剪枝算法2.将路径,判断条件和相等条件传入3.进原创 2020-11-26 11:16:02 · 233 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No48.有重复字符串的排列组合
题号:no48题目名: 有重复字符串的排列组合原题URL:https://leetcode-cn.com/problems/permutation-ii-lcci/题目描述有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。示例示例 1: 输入:S = "qqe" 输出:["eqq","qeq","qqe"]示例 2: 输入:S = "ab" 输出:["ab", "ba"]限制字符都是英文字母。字符串长度在[1, 9]之间。思路1.经典回溯算法,但是由于原创 2020-11-26 11:12:13 · 266 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No47.无重复字符串的排列组合
题号:no47题目名:无重复字符串的排列组合原题URL:https://leetcode-cn.com/problems/permutation-i-lcci/题目描述无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。示例示例 1: 输入:S = "qwe" 输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]示例 2: 输入:S = "ab" 输出:["ab", "ba"]限制字符都是英文字母。原创 2020-11-24 18:32:17 · 160 阅读 · 1 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No46.汉诺塔问题
题号:no46题目名:汉诺塔问题原题URL:https://leetcode-cn.com/problems/hanota-lcci/题目描述在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。请编写程序,用栈将所有盘子从第一根柱子原创 2020-11-24 17:42:30 · 228 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No44.幂集
题号:no44题目名:幂集原题URL:https://leetcode-cn.com/problems/power-set-lcci/题目描述幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。说明:解集不能包含重复的子集。示例示例 1: 输入: nums = [1,2,3] 输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2],原创 2020-11-24 14:59:59 · 193 阅读 · 0 评论 -
[算法练习及思路-leetcode每日一题(Java解法)]No147.对链表进行插入排序
题号:no147题目名:对链表进行插入排序原题URL:https://leetcode-cn.com/problems/insertion-sort-list/题目描述插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在原创 2020-11-20 16:48:01 · 144 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No33.求和路径
题号:no33题目名:求和路径原题URL:https://leetcode-cn.com/problems/paths-with-sum-lcci/题目描述给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。示例示例 1: 5 / \ 4原创 2020-11-20 15:08:20 · 105 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No41.三步问题
题号:no41题目名:三步问题原题URL:https://leetcode-cn.com/problems/three-steps-problem-lcci/题目描述三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例示例 1: 输入:n = 3 输出:4 说明: 有四种走法示例 2: 输入:n = 5 输出:13限制n范围在[1, 1000000原创 2020-11-19 21:08:11 · 193 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No32.检查子树
题号:no32题目名:检查子树原题URL:https://leetcode-cn.com/problems/check-subtree-lcci/题目描述检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。示例示例 1: 输入:t1 = [1, 2, 3], t2 = [2]原创 2020-11-19 18:16:39 · 116 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No30.首个共同祖先
题号:no30题目名: 首个共同祖先原题URL:https://leetcode-cn.com/problems/first-common-ancestor-lcci/题目描述设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 3 / \ 5 1 / \ / \6 2 0 8 / \ 7原创 2020-11-19 17:04:08 · 136 阅读 · 0 评论 -
[算法练习及思路-程序员面试金典(Java解法)]No29.后继者
题号:no29题目名:后继者原题URL:https://leetcode-cn.com/problems/successor-lcci/题目描述设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例示例 1:输入: root = [2,1,3], p = 1 2 / \1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 6 5原创 2020-11-19 16:18:04 · 115 阅读 · 0 评论