01 2021 档案

摘要:剑指 Offer 68 - II. 二叉树的最近公共祖先 地址:剑指 Offer 68 - II. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、 阅读全文
posted @ 2021-01-29 02:51 ganshuoos 阅读(43) 评论(0) 推荐(0)
摘要:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 地址:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 阅读全文
posted @ 2021-01-29 02:44 ganshuoos 阅读(49) 评论(0) 推荐(0)
摘要:剑指 Offer 67. 把字符串转换成整数 地址:剑指 Offer 67. 把字符串转换成整数 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的 阅读全文
posted @ 2021-01-29 02:25 ganshuoos 阅读(51) 评论(0) 推荐(0)
摘要:剑指 Offer 66. 构建乘积数组 地址:剑指 Offer 66. 构建乘积数组 给定一个数组 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]× 阅读全文
posted @ 2021-01-29 01:43 ganshuoos 阅读(54) 评论(0) 推荐(0)
摘要:剑指 Offer 65. 不用加减乘除做加法 地址:剑指 Offer 65. 不用加减乘除做加法 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a = 1, b = 1 输出: 2 提示: a, b 均可能是负数或 0 结果不会溢 阅读全文
posted @ 2021-01-29 00:59 ganshuoos 阅读(73) 评论(0) 推荐(0)
摘要:剑指 Offer 63. 股票的最大利润 地址:剑指 Offer 63. 股票的最大利润 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 阅读全文
posted @ 2021-01-29 00:36 ganshuoos 阅读(34) 评论(0) 推荐(0)
摘要:剑指 Offer 62. 圆圈中最后剩下的数字 地址:剑指 Offer 62. 圆圈中最后剩下的数字 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一 阅读全文
posted @ 2021-01-26 15:10 ganshuoos 阅读(66) 评论(0) 推荐(0)
摘要:剑指 Offer 61. 扑克牌中的顺子 地址:剑指 Offer 61. 扑克牌中的顺子 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。 示例 1: 输入: [1 阅读全文
posted @ 2021-01-26 14:45 ganshuoos 阅读(80) 评论(0) 推荐(0)
摘要:剑指 Offer 60. n个骰子的点数 地址:剑指 Offer 60. n个骰子的点数 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 阅读全文
posted @ 2021-01-26 13:48 ganshuoos 阅读(70) 评论(0) 推荐(0)
摘要:剑指 Offer 59 - II. 队列的最大值 地址:剑指 Offer 59 - II. 队列的最大值 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_fr 阅读全文
posted @ 2021-01-25 13:34 ganshuoos 阅读(82) 评论(0) 推荐(0)
摘要:剑指 Offer 59 - I. 滑动窗口的最大值 地址:剑指 Offer 59 - I. 滑动窗口的最大值 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5 阅读全文
posted @ 2021-01-25 11:59 ganshuoos 阅读(79) 评论(0) 推荐(0)
摘要:剑指 Offer 58 - II. 左旋转字符串 地址:剑指 Offer 58 - II. 左旋转字符串 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefg 阅读全文
posted @ 2021-01-25 10:53 ganshuoos 阅读(61) 评论(0) 推荐(0)
摘要:剑指 Offer 58 - I. 翻转单词顺序 地址:剑指 Offer 58 - I. 翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。 阅读全文
posted @ 2021-01-25 10:51 ganshuoos 阅读(96) 评论(0) 推荐(0)
摘要:剑指 Offer 57 - II. 和为s的连续正数序列 地址:剑指 Offer 57 - II. 和为s的连续正数序列 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入: 阅读全文
posted @ 2021-01-25 00:44 ganshuoos 阅读(92) 评论(0) 推荐(0)
摘要:剑指 Offer 57. 和为s的两个数字 地址:剑指 Offer 57. 和为s的两个数字 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9 阅读全文
posted @ 2021-01-24 23:21 ganshuoos 阅读(63) 评论(0) 推荐(0)
摘要:剑指 Offer 56 - II. 数组中数字出现的次数 II 地址:剑指 Offer 56 - II. 数组中数字出现的次数 II 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1: 输入:nums = [3,4,3,3] 输出:4 示 阅读全文
posted @ 2021-01-24 01:20 ganshuoos 阅读(57) 评论(0) 推荐(0)
摘要:剑指 Offer 56 - I. 数组中数字出现的次数 地址:剑指 Offer 56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = 阅读全文
posted @ 2021-01-24 01:18 ganshuoos 阅读(72) 评论(0) 推荐(0)
摘要:剑指 Offer 55 - II. 平衡二叉树 地址:剑指 Offer 55 - II. 平衡二叉树 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7 阅读全文
posted @ 2021-01-24 01:17 ganshuoos 阅读(60) 评论(0) 推荐(0)
摘要:剑指 Offer 55 - I. 二叉树的深度 地址:剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 阅读全文
posted @ 2021-01-23 01:29 ganshuoos 阅读(79) 评论(0) 推荐(0)
摘要:剑指 Offer 54. 二叉搜索树的第k大节点 地址:剑指 Offer 54. 二叉搜索树的第k大节点 给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / 1 4 2 输出: 4 示例 2: 输入: root = [5 阅读全文
posted @ 2021-01-23 01:26 ganshuoos 阅读(78) 评论(0) 推荐(0)
摘要:剑指 Offer 53 - II. 0~n-1中缺失的数字 地址:剑指 Offer 53 - II. 0~n-1中缺失的数字 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 阅读全文
posted @ 2021-01-22 02:45 ganshuoos 阅读(62) 评论(0) 推荐(0)
摘要:剑指 Offer 53 - I. 在排序数组中查找数字 I 地址:剑指 Offer 53 - I. 在排序数组中查找数字 I 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [ 阅读全文
posted @ 2021-01-22 01:57 ganshuoos 阅读(78) 评论(0) 推荐(0)
摘要:剑指 Offer 52. 两个链表的第一个公共节点 地址:剑指 Offer 52. 两个链表的第一个公共节点 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], lis 阅读全文
posted @ 2021-01-22 01:05 ganshuoos 阅读(67) 评论(0) 推荐(0)
摘要:剑指 Offer 49. 丑数 地址:剑指 Offer 49. 丑数 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是 阅读全文
posted @ 2021-01-22 00:52 ganshuoos 阅读(65) 评论(0) 推荐(0)
摘要:剑指 Offer 48. 最长不含重复字符的子字符串 地址:剑指 Offer 48. 最长不含重复字符的子字符串 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以 阅读全文
posted @ 2021-01-22 00:17 ganshuoos 阅读(62) 评论(0) 推荐(0)
摘要:剑指 Offer 47. 礼物的最大价值 地址: 剑指 Offer 47. 礼物的最大价值 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值 阅读全文
posted @ 2021-01-21 20:56 ganshuoos 阅读(39) 评论(0) 推荐(0)
摘要:剑指 Offer 46. 把数字翻译成字符串 地址: 剑指 Offer 46. 把数字翻译成字符串 定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个 阅读全文
posted @ 2021-01-21 20:04 ganshuoos 阅读(77) 评论(0) 推荐(0)
摘要:剑指 Offer 45. 把数组排成最小的数 地址: 剑指 Offer 45. 把数组排成最小的数 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] 输 阅读全文
posted @ 2021-01-19 13:26 ganshuoos 阅读(76) 评论(0) 推荐(0)
摘要:剑指 Offer 44. 数字序列中某一位的数字 地址:剑指 Offer 44. 数字序列中某一位的数字 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。 请写一个函数,求任意第n位对应 阅读全文
posted @ 2021-01-18 00:36 ganshuoos 阅读(85) 评论(0) 推荐(0)
摘要:剑指 Offer 43. 1~n 整数中 1 出现的次数 地址:剑指 Offer 43. 1~n 整数中 1 出现的次数 输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 示例 1: 输入: 阅读全文
posted @ 2021-01-17 01:18 ganshuoos 阅读(104) 评论(0) 推荐(0)
摘要:剑指 Offer 42. 连续子数组的最大和 地址:剑指 Offer 42. 连续子数组的最大和 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 阅读全文
posted @ 2021-01-16 16:08 ganshuoos 阅读(45) 评论(0) 推荐(0)
摘要:剑指 Offer 41. 数据流中的中位数 地址:剑指 Offer 41. 数据流中的中位数 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 例如, [2,3, 阅读全文
posted @ 2021-01-16 15:48 ganshuoos 阅读(77) 评论(0) 推荐(0)
摘要:剑指 Offer 40. 最小的k个数 地址:剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 阅读全文
posted @ 2021-01-16 13:42 ganshuoos 阅读(92) 评论(0) 推荐(0)
摘要:剑指 Offer 39. 数组中出现次数超过一半的数字 地址:剑指 Offer 39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5 阅读全文
posted @ 2021-01-16 13:11 ganshuoos 阅读(96) 评论(0) 推荐(0)
摘要:剑指 Offer 38. 字符串的排列 地址:剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s = "abc" 输出:["abc","acb","bac","bca","cab"," 阅读全文
posted @ 2021-01-15 22:30 ganshuoos 阅读(103) 评论(0) 推荐(0)
摘要:剑指 Offer 37. 序列化二叉树 地址:剑指 Offer 37. 序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树。 示例: 你可以将以下二叉树: 1 / 2 3 / 4 5 序列化为 "[1,2,3,null,null,4,5]" 注意:本题与主站 297 题相同:https:/ 阅读全文
posted @ 2021-01-15 21:48 ganshuoos 阅读(60) 评论(0) 推荐(0)
摘要:剑指 Offer 50. 第一个只出现一次的字符 地址:剑指 Offer 50. 第一个只出现一次的字符 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例: s = "abaccdeff" 返回 "b" s = "" 返回 " " 限制: 0 ⇐ s 阅读全文
posted @ 2021-01-13 22:46 ganshuoos 阅读(70) 评论(0) 推荐(0)
摘要:剑指 Offer 36. 二叉搜索树与双向链表 地址:剑指 Offer 36. 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化 阅读全文
posted @ 2021-01-13 22:44 ganshuoos 阅读(49) 评论(0) 推荐(0)
摘要:剑指 Offer 35. 复杂链表的复制 地址:剑指 Offer 35. 复杂链表的复制 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入: 阅读全文
posted @ 2021-01-12 23:09 ganshuoos 阅读(86) 评论(0) 推荐(0)
摘要:剑指 Offer 34. 二叉树中和为某一值的路径 地址:剑指 Offer 34. 二叉树中和为某一值的路径 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 阅读全文
posted @ 2021-01-09 00:05 ganshuoos 阅读(74) 评论(0) 推荐(0)
摘要:剑指 Offer 33. 二叉搜索树的后序遍历序列 地址:剑指 Offer 33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / 2 6 阅读全文
posted @ 2021-01-07 19:39 ganshuoos 阅读(75) 评论(0) 推荐(0)
摘要:剑指 Offer 32 - III. 从上到下打印二叉树 III 地址:剑指 Offer 32 - III. 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给 阅读全文
posted @ 2021-01-07 18:47 ganshuoos 阅读(94) 评论(0) 推荐(0)
摘要:剑指 Offer 32 - II. 从上到下打印二叉树 II 地址:剑指 Offer 32 - II. 从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 阅读全文
posted @ 2021-01-07 18:42 ganshuoos 阅读(69) 评论(0) 推荐(0)
摘要:剑指 Offer 32 - I. 从上到下打印二叉树 地址:剑指 Offer 32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回: [3 阅读全文
posted @ 2021-01-05 16:06 ganshuoos 阅读(77) 评论(0) 推荐(0)
摘要:剑指 Offer 31. 栈的压入、弹出序列 地址:剑指 Offer 31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该 阅读全文
posted @ 2021-01-05 15:54 ganshuoos 阅读(66) 评论(0) 推荐(0)
摘要:剑指 Offer 30. 包含min函数的栈 地址:剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = ne 阅读全文
posted @ 2021-01-04 23:48 ganshuoos 阅读(119) 评论(0) 推荐(0)
摘要:剑指 Offer 29. 顺时针打印矩阵 地址:剑指 Offer 29. 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 阅读全文
posted @ 2021-01-04 23:47 ganshuoos 阅读(78) 评论(0) 推荐(0)