剑指offer50题
剑指offer50题实战
追光而遇
这个作者很懒,什么都没留下…
展开
-
剑指offer50题总目录
Offer 05. 替换空格06. 从尾到头打印链表09. 用两个栈实现一个队列21. 调整数组顺序使奇数位于偶数前面22. 链表中倒数第k个节点25. 合并两个排序的链表26. 树的子结构(中等)27. 二叉树的镜像28. 对称的二叉树29. 顺时针打印矩阵30. 包含min函数的栈31. 栈的压入、弹出序列(中等)32 - I. 从上到下打印二叉树(中等)32 - II. 从上到下打印二叉树 II32 - III. 从上到下打印二叉树 III(中等)原创 2023-08-17 09:02:29 · 432 阅读 · 0 评论 -
35 复杂链表的复制
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:示例 2:示例 3:示例 4:head = [][]解释:给定的链表为空(空指针),因此返回 null。原创 2023-08-20 23:09:08 · 50 阅读 · 0 评论 -
48. 最长不含重复字符的子字符串(中等)
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入:"abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入:"bbbbb"输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入:"pwwkew"输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。原创 2023-08-20 22:29:54 · 75 阅读 · 0 评论 -
46. 把数字翻译成字符串(中等)
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。原创 2023-08-17 15:47:57 · 70 阅读 · 0 评论 -
47. 礼物的最大价值
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?原创 2023-08-17 15:00:58 · 142 阅读 · 0 评论 -
63. 股票的最大利润(中等)
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 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解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。原创 2023-08-17 13:27:38 · 115 阅读 · 0 评论 -
61. 扑克牌中的顺子
从若干副扑克牌中随机抽 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限制:数组长度为 5数组的数取值为 [0, 13]原创 2023-08-17 10:23:47 · 89 阅读 · 0 评论 -
45. 把数组排成最小的数
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入:[10,2]输出:"102"示例 2:输入:"3033459"说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0‘原创 2023-08-17 09:54:49 · 79 阅读 · 0 评论 -
44. 数字序列中某一位的数字(中等)
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。示例 1:n = 33示例 2:n = 11输出:0。原创 2023-07-26 09:28:27 · 72 阅读 · 0 评论 -
42. 连续子数组的最大和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入:输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。原创 2023-07-25 14:55:44 · 62 阅读 · 0 评论 -
40. 最小的k个数
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:[1,2]或者[2,1]示例 2:[0]原创 2023-07-25 14:00:30 · 83 阅读 · 0 评论 -
05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。原创 2023-07-25 13:27:25 · 142 阅读 · 0 评论 -
39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输出:2。原创 2023-07-25 10:43:48 · 57 阅读 · 0 评论 -
33. 二叉搜索树的后序遍历序列
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。示例 1:输入:输出:false示例 2:输入:输出:true。原创 2023-07-14 17:54:14 · 58 阅读 · 0 评论 -
32 - III. 从上到下打印二叉树 III
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。原创 2023-07-14 13:19:17 · 74 阅读 · 0 评论 -
32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。原创 2023-07-14 09:36:53 · 55 阅读 · 0 评论 -
32 - I. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。原创 2023-07-13 20:13:57 · 49 阅读 · 0 评论 -
31. 栈的压入、弹出序列(中等)
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列是某栈的压栈序列,序列是该压栈序列对应的一个弹出序列,但就不可能是该压栈序列的弹出序列。示例 1:true示例 2:false解释:1 不能在 2 之前弹出。pushed 是 popped 的排列。原创 2023-07-13 19:37:22 · 95 阅读 · 0 评论 -
29. 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。原创 2023-07-13 17:23:38 · 96 阅读 · 0 评论 -
28. 对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树是对称的。但是下面这个示例 1:true示例 2:输出:false限制:0原创 2023-07-11 17:46:34 · 111 阅读 · 0 评论 -
27. 二叉树的镜像
请完成一个函数,输入一个二叉树,该函数输出它的镜像。原创 2023-07-11 17:39:50 · 242 阅读 · 0 评论 -
26. 树的子结构(中等)
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A =[1,2,3], B =[3,1]输出:false示例 2:输入:A =, B =[4,1]输出:true。原创 2023-07-11 16:19:17 · 85 阅读 · 0 评论 -
25. 合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:1->2->41->3->4。原创 2023-07-11 14:35:30 · 108 阅读 · 0 评论 -
22. 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表:, 和k = 2返回链表4->5。原创 2023-07-11 10:41:42 · 180 阅读 · 0 评论 -
21. 调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。示例:[1,3,2,4][3,1,2,4]也是正确的答案之一。原创 2023-07-11 09:50:03 · 87 阅读 · 0 评论 -
24. 反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。原创 2023-03-23 19:14:57 · 65 阅读 · 0 评论 -
06. 从尾到头打印链表
倒序打印链表原创 2023-03-23 14:23:51 · 87 阅读 · 0 评论 -
30. 包含min函数的栈
30 包含min函数的栈原创 2023-03-22 20:56:31 · 86 阅读 · 0 评论 -
11. 旋转数组的最小数字
旋转数组的最小数字原创 2023-03-21 20:26:13 · 65 阅读 · 0 评论 -
青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。,如计算初始结果为:1000000008,请返回 1。原创 2023-03-21 19:14:15 · 59 阅读 · 0 评论 -
10. 斐波那契数
斐波那契数列原创 2023-03-21 17:37:30 · 185 阅读 · 0 评论 -
09. 用两个栈实现一个队列
剑指offer:09 用两个栈实现一个队列原创 2023-03-21 11:04:17 · 62 阅读 · 0 评论