
剑指offer
小米内推官_AngelDg
我们总以为,是生活欠我们一个“满意”,其实是我们欠生活一个“努力”。
展开
-
[每日一题]35:二叉树的最近公共祖先
题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,...原创 2020-04-09 20:42:41 · 278 阅读 · 0 评论 -
[剑指Offer]:二叉搜索树的最近公共祖先
文章目录题目描述题解思路题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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,3,5], p = 2, q =原创 2021-02-12 22:37:15 · 140 阅读 · 0 评论 -
[剑指Offer]:把字符串转换成整数
文章目录题目描述题解思路题目描述写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影原创 2021-02-12 21:54:55 · 174 阅读 · 0 评论 -
[剑指Offer]:构建乘积数组
文章目录题目描述题解思路题目描述给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]提示:所有元素乘积之和不会溢出 32 位整数a.length <= 100000题解思路算法流程:初始化:数组 B原创 2021-02-12 11:16:29 · 145 阅读 · 0 评论 -
[每日一题]56:不用加减乘除做加法
题目描述请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。给定两个int A和B。请返回A+B的值测试样例:1,2返回:3思路可以通过位运算实现,具体实现如下:二进制位异或运算相当于对应位相加,不考虑进位比如: 1 ^ 1 = 0 —> 1 + 1 = 0 (当前位值为0,进一位)1 ^ 0 = 1 —> 1 + 0 = 1 (当前位值为1)0 ^ 0 = 0 —> 0 + 0 = 0 (当前位值为0)二进制位与运算相当于对应位相加之后的进位比原创 2020-05-11 09:40:01 · 290 阅读 · 0 评论 -
[剑指Offer]:股票的最大利润
文章目录题目描述题解思路方法一:一次遍历方法二:动态规划题目描述假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下,原创 2021-02-09 19:18:59 · 125 阅读 · 0 评论 -
[剑指Offer]:圆圈中最后剩下的数字
文章目录题目描述题解思路题目描述0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2题解思路代码实现:代码实现:原创 2021-02-09 18:36:34 · 252 阅读 · 2 评论 -
[剑指Offer]:扑克牌中的顺子
文章目录题目描述题解思路题目描述从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,0,1,2,5]输出: True题解思路先排序后遍历代码实现:class Solution {public: bool isStraight(vector<int>原创 2021-02-04 18:24:53 · 176 阅读 · 0 评论 -
[剑指Offer]:n个骰子的点数(动归)
文章目录题目描述题解思路题目描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例 1:输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]示例 2:输入: 2输出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,原创 2021-02-04 18:05:46 · 198 阅读 · 0 评论 -
[剑指Offer]:队列的最大值
文章目录题目描述题解思路题目描述请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入: ["MaxQueue","push_back","push_back","max_value","pop_front","max_value"][[],[1],[2],[],[],[]]输出: [null,原创 2021-02-04 00:43:21 · 239 阅读 · 0 评论 -
[剑指Offer]:滑动窗口的最大值
文章目录题目描述题解思路方法一:暴力解法方法二:使用双端队列 deque题目描述给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3原创 2021-02-03 23:22:08 · 166 阅读 · 0 评论 -
[剑指Offer]:左旋转字符串
文章目录题目描述题解思路方法一:+= 与 erase()。方法二:三次翻转题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出: "cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出: "umghlrlose"题解思路方法一:+=原创 2021-02-03 18:36:43 · 162 阅读 · 0 评论 -
[剑指Offer]:翻转单词顺序
文章目录题目描述题解思路方法一:双指针方法二:单词逐个反转、再整体反转题目描述输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或原创 2021-02-03 12:14:07 · 232 阅读 · 0 评论 -
[剑指Offer]:和为s的连续正数序列
文章目录题目描述题解思路方法一:枚举 + 暴力方法二:双指针题目描述输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]题解思路方法一:枚举 + 暴力枚举每个正整数为起点,判断以它为起点的序列和 sum 是否原创 2021-02-02 19:34:42 · 158 阅读 · 0 评论 -
[剑指Offer]:和为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]题解思路 – 双指针法class Solution {public原创 2021-02-02 09:41:01 · 153 阅读 · 0 评论 -
[剑指Offer]:数组中数字出现的次数
文章目录题目一题解思路:分组异或题目二题解思路:方法一:排序方法二:hashmap方法三:位运算题目一一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]题解思路:分组异或先对所有数字进行一次异或,得到两个原创 2021-02-01 23:43:00 · 245 阅读 · 4 评论 -
[剑指Offer]:平衡二叉树
文章目录题目描述题解思路方法一:先序遍历方法二:后序遍历题目描述输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2原创 2021-02-01 18:59:44 · 141 阅读 · 0 评论 -
[剑指Offer]:二叉树的深度
文章目录题目描述题解思路方法一:深度优先搜索(DFS)广度优先搜索(BFS)题目描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。题解思路方法一:深度优先搜索(DFS)我们找出 root 的左子树和右子树的深度,然后用其较大的值 +1 即原创 2021-02-01 00:09:33 · 136 阅读 · 0 评论 -
[剑指Offer]:二叉搜索树的第k大节点
文章目录题目描述题解思路方法一:递归方法二:非递归题目描述给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4题解思路方法一:递归一般情况的中序原创 2021-01-31 23:40:29 · 161 阅读 · 0 评论 -
[剑指Offer]: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题解思路方法一:暴力搜索复杂度分析时间复杂度 O(N)O(N)O(N)空间复杂度 O(1)O(1)O(1): 几个变量使用常数大小的额外空间。原创 2021-01-31 20:44:13 · 155 阅读 · 0 评论 -
[剑指Offer]:在排序数组中查找数字
文章目录题目描述题解思路方法一:遍历数组方法二:hashmap方法三:利用函数 lower_bound 与 upper_bound方法四:二分法题目描述统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0题解思路方法一:遍历数组思路不讲武德。代码实现:class Solution {public:原创 2021-01-30 16:24:23 · 208 阅读 · 0 评论 -
[剑指Offer]:数组中的逆序对
文章目录题目描述题解思路方法一:暴力解法(超时)方法二:归并排序 方法三:散化树状数组(未掌握)题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5题解思路方法一:暴力解法(超时)使用两层 for 循环枚举所有的数对,逐一判断是否构成逆序关系。复杂度分析:时间复杂度:O(N2)O(N^2)O(N2),这里 N 是数组的长度;空间复杂度:O(1)O(1)O(原创 2021-01-29 23:52:39 · 302 阅读 · 0 评论 -
[每日一题]8:第一个只出现一次的字符
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 要求时间复杂度为O(n)。思路:最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符相比较,因此这种思路时间复杂度是O(n2)。我们可以统计...原创 2020-02-25 19:25:49 · 342 阅读 · 0 评论 -
[剑指Offer]:丑数
文章目录题目描述题解思路方法一:原始思路方法二:动态规划题目描述我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。n 不超过1690。题解思路方法一:原始思路逐个判断每个数是不是丑数,直到丑数的数量达到 n。该方法会超时!!!class Solution {publ原创 2021-01-28 23:08:01 · 154 阅读 · 1 评论 -
[剑指Offer]:最长不含重复字符的子字符串
文章目录题目描述题解思路方法一:滑动窗口方法二:优化的滑动窗口(哈希表)方法三:哈希表题目描述请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wk原创 2021-01-27 23:20:19 · 147 阅读 · 0 评论 -
[剑指Offer]:礼物的最大价值(动态规划)
文章目录题目描述题解思路 -- 动态规划方法一:创建辅助数组方法二:不创建辅助数组题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物题原创 2021-01-26 22:40:33 · 201 阅读 · 0 评论 -
[剑指Offer]:把数字翻译成字符串(动态规划、递归)
文章目录题目描述题解思路方法一:动态规划方法二:递归题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"题解思路方法一:动态规划代码实现:clas原创 2021-01-26 16:10:11 · 137 阅读 · 0 评论 -
[剑指Offer]:把数组排成最小的数
文章目录题目描述题解思路题目描述输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例 2:输入: [3,30,34,5,9]输出: "3033459"提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0题解思路不管有多少个数,也不管这些数各自分别是原创 2021-01-24 20:45:01 · 126 阅读 · 0 评论 -
[剑指Offer]:数字序列中某一位的数字
文章目录题目描述题解思路题目描述数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。示例 1:输入:n = 3输出:3示例 2:输入:n = 11输出:0题解思路这道题其实就是找一下规律,同时需要我们细心计算好一些细节,比如位数、余数、索引等。找到 n 属于哪个数位里的索引。比如 n = 5,那 n 就是个位这个数位里的索引;或者原创 2021-01-22 19:50:04 · 152 阅读 · 0 评论 -
[剑指Offer]:1 ~ n 整数中 1 出现的次数
文章目录题目描述题解思路方法一:硬核解法方法二:找规律方法三:神仙代码题目描述输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1:输入:n = 12输出:5示例 2:输入:n = 13输出:6题解思路方法一:硬核解法每次对10取模,然后判断个位数是否为1,当n位数大时,时间复杂度也比较高:O(nlogn)。class Solution {public:原创 2021-01-22 15:21:08 · 176 阅读 · 0 评论 -
[每日一题]7:连续子数组的最大和(贪心、动归)
题目描述:输入一个整型数组,数组里有正数也有负数。数组中一个或者连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为{1, -2, 3, 10, -4, 7, 2, -5}和最大的子数组为{3, 10, -4, 7, 2},因此输出为该子数组的和18思路:因为时间复杂度为O(n),则只能遍历一次数组这里同时使用两个变量sum和max,其中su...原创 2020-02-20 22:32:15 · 540 阅读 · 0 评论 -
[剑指Offer]:数据流中的中位数
文章目录题目描述题解思路题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的原创 2021-01-21 22:02:18 · 140 阅读 · 0 评论 -
[每日一题]73:最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。代码示例:#include <iostream>#include <vector>using namespace std;class Solution { void HeapAdjustDown(vector<int>& arr, int start, int end) { int temp = arr[start]原创 2020-07-12 11:50:40 · 973 阅读 · 0 评论 -
[每日一题]6:求数组中出现超过一半的数字
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路:对数组进行排序数组再经过排序后,数字出现频率超一半的,一定是数组的中位数但是数组的中位数不一定是频率出现最高的数,需要判断一下这个数字出现的频率是否超过整个数组长...原创 2020-02-19 23:11:21 · 328 阅读 · 0 评论 -
[剑指Offer]:字符串的排列(回溯)
文章目录题目描述题解思路题目描述输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]题解思路递归回溯假设s = “abc”,那么我们首先让 a 在第 0 位,再让 b 在第 0 位,再让 c 在第 0 位。a 在第 0 位,那么还剩 bc。我们先放 b 在第 1 位,再让 c 在第 1 位。b 在第 1 位,那么还原创 2021-01-21 09:13:05 · 166 阅读 · 0 评论 -
[剑指Offer]:序列化二叉树
文章目录题目描述题解思路方法一:层序遍历方法二:前序遍历题目描述实现两个函数,分别用来序列化和反序列化二叉树。示例:你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 "[1,2,3,null,null,4,5]"题解思路方法一:层序遍历序列化就是简单的层序遍历。在反序列化的时候,将字符串解析的过程中将新建的节点存入vector容器。根据节点间的顺序关系,构建连接树结构。代码实现:class Codec {publ原创 2021-01-20 23:45:15 · 169 阅读 · 0 评论 -
[剑指Offer]:二叉搜索树与双向链表
文章目录题目描述题解思路题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成转换操作。当转化原创 2021-01-20 11:21:21 · 125 阅读 · 0 评论 -
[剑指Offer]:复杂链表的复制
文章目录题目描述题解思路方法一:哈希表方法二:拼接 + 拆分题目描述请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2原创 2021-01-20 10:40:28 · 133 阅读 · 0 评论 -
[每日一题]103:二叉树中和为某一值的路径
题目描述给定一个二叉树和一个值 sum,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径,例如:给出如下的二叉树,sum=22,返回true,因为存在一条路径 5→4→11→2的节点值之和为 22示例1输入{1,2},0输出false示例2输入{1,2},3输出true解答代码:bool hasPathSum(TreeNode* root, int sum) { if (nullptr == root) return false;原创 2020-10-03 23:12:19 · 248 阅读 · 0 评论 -
[剑指Offer]:二叉搜索树的后序遍历序列
文章目录题目描述题解思路题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true题解思路二叉搜索树的性质:根节点左侧的所有节点的值一定小于等于根节点的值,根节点右侧的所原创 2021-01-19 23:00:19 · 180 阅读 · 0 评论