剑指 Offer(第 2 版)
文章平均质量分 82
《剑指 Offer(第 2 版)》通行全球的程序员经典面试秘籍。剖析典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这 5 个面试要点。
TomLazy
及时当勉励 岁月不待人
展开
-
【LeetCode】剑指 Offer 68. 二叉树中两个节点的最低公共祖先 p326 -- Java Version
剑指 Offer 68. 二叉树中两个节点的最低公共祖先 -- (解法:递归), 一共分为两小题:题目一:二叉搜索树的最近公共祖先,题目二:二叉树的最近公共祖先。原创 2023-04-23 21:39:03 · 592 阅读 · 0 评论 -
【LeetCode】剑指 Offer 67. 把字符串转换成整数 p318 -- Java Version
剑指 Offer 67. 把字符串转换成整数 -- (解法:字符数组遍历,考虑四种特殊情况),写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。原创 2023-04-23 19:36:21 · 691 阅读 · 0 评论 -
【LeetCode】剑指 Offer 66. 构建乘积数组 p312 -- Java Version
剑指 Offer 66. 构建乘积数组 -- (解法:构建乘积矩阵 B[i] = C[i] * D[i]),给定一个数组 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]。不能使用除法。原创 2023-04-23 15:29:01 · 630 阅读 · 0 评论 -
【LeetCode】剑指 Offer 65. 不用加减乘除做加法 p310 -- Java Version
剑指 Offer 65. 不用加减乘除做加法 -- (解法:位运算),写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。原创 2023-04-22 15:36:45 · 488 阅读 · 0 评论 -
【LeetCode】剑指 Offer 64. 求1+2+…+n p307 -- Java Version
剑指 Offer 64. 求1+2+…+n -- (解法:逻辑运算符短路 | 快速乘 | 库函数 ),求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。原创 2023-04-22 14:08:48 · 461 阅读 · 0 评论 -
【LeetCode】剑指 Offer 63. 股票的最大利润 p304 -- Java Version
剑指 Offer 63. 股票的最大利润 -- (解法:一次遍历/动规)假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?原创 2023-04-21 11:29:56 · 694 阅读 · 0 评论 -
【LeetCode】剑指 Offer 62. 圆圈中最后剩下的数字(约瑟夫环问题) p300 -- Java Version
剑指 Offer 62. 圆圈中最后剩下的数字 -- (解题方法:环形链表/模拟链表/数学分析),`0,1,···,n-1` 这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。原创 2023-04-20 15:19:48 · 538 阅读 · 0 评论 -
【LeetCode】剑指 Offer 61. 扑克牌中的顺子 p298 -- Java Version
剑指 Offer 61. 扑克牌中的顺子 -- (解法:排序 + 遍历),从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。原创 2023-04-19 15:46:52 · 430 阅读 · 0 评论 -
【LeetCode】剑指 Offer 60. n个骰子的点数 p294 -- Java Version
剑指 Offer 60. n个骰子的点数 --(解法:动态规划),把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。原创 2023-04-18 15:35:22 · 507 阅读 · 0 评论 -
【LeetCode】剑指 Offer 59. 队列的最大值 p288 -- Java Version
剑指 Offer 59. 队列的最大值 -- (解法:由双端队列实现单调队列),一共分为两小题:题目一:滑动窗口的最大值, 题目二:队列的最大值。原创 2023-04-17 15:49:07 · 420 阅读 · 0 评论 -
【LeetCode】剑指 Offer 58. 反转字符串 p284 -- Java Version
剑指 Offer 58. 反转字符串 -- (解题方法:多次翻转,主要考察对字符串的操作),一共分为两小题: 题目一:翻转单词顺序,题目二:左旋转字符串。原创 2023-04-16 16:23:38 · 378 阅读 · 0 评论 -
【LeetCode】剑指 Offer 57. 和为 s 的数字 p280 -- Java Version
剑指 Offer 57. 和为 s 的数字,(解题方法:双指针),一共分为两小题: 题目一:和为 s的两个数字,题目二:和为 s 的连续正数序列。原创 2023-04-15 12:39:52 · 509 阅读 · 0 评论 -
【LeetCode】剑指 Offer 56. 数组中数字出现的次数 p275 -- Java Version
剑指 Offer 56. 数组中数字出现的次数 -- (解题方法:位运算),一共分为两小题:题目一:数组中只出现一次的两个数字;题目二:数组中唯一只出现一次的数字。原创 2023-04-14 13:45:54 · 564 阅读 · 0 评论 -
【LeetCode】剑指 Offer 55. 二叉树的深度 p271 -- Java Version
剑指 Offer 55. 二叉树的深度--(解题方法:递归 -- 后序遍历),一共分为两小题:(题目一:二叉树的深度,题目二:平衡二叉树)。原创 2023-04-13 13:36:25 · 423 阅读 · 0 评论 -
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点 p269 -- Java Version
剑指 Offer 54. 二叉搜索树的第k大节点 -- (解题方法:1、中序遍历),给定一棵二叉搜索树,请找出其中第 k 大的节点的值。原创 2023-04-13 11:11:05 · 372 阅读 · 0 评论 -
【LeetCode】剑指 Offer 53. 在排序数组中查找数字 p263 -- Java Version
剑指 Offer 53. 在排序数组中查找数字,分为 3小题,分别为题目一:数字在排序数组中出现的次数、题目二:0~n-1中缺失的数字、题目三:数组中数值和下标相等的元素 -- (解题方法均为 二分)。原创 2023-04-12 16:34:59 · 541 阅读 · 0 评论 -
【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点 p253 -- Java Version
剑指 Offer 52. 两个链表的第一个公共节点 -- (解题方法:1、枚举,2、辅助栈,3、双指针),输入两个链表,找出它们的第一个公共节点。原创 2023-04-11 11:11:05 · 475 阅读 · 0 评论 -
【LeetCode】剑指 Offer 51. 数组中的逆序对 p249 -- Java Version
剑指 Offer 51. 数组中的逆序对 --(解题方法:1、枚举,2、归并排序),在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。原创 2023-04-10 14:06:02 · 335 阅读 · 0 评论 -
【LeetCode】剑指 Offer 50. 第一个只出现一次的字符 p243 -- Java Version
剑指 Offer 50. 第一个只出现一次的字符 -- (解题方法:1、枚举,2、哈希表)。在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。原创 2023-04-09 14:31:57 · 487 阅读 · 0 评论 -
【LeetCode】剑指 Offer 49. 丑数 p240 -- Java Version
剑指 Offer 49. 丑数 -- (解题方法:1、枚举,2、动态规划)。我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number。求按从小到大的顺序的第 n 个丑数。原创 2023-04-08 15:40:26 · 326 阅读 · 0 评论 -
【LeetCode】剑指 Offer 48. 最长不含重复字符的子字符串 p236 -- Java Version
剑指 Offer 48. 最长不含重复字符的子字符串。请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。原创 2023-04-07 14:05:23 · 260 阅读 · 0 评论 -
【LeetCode】剑指 Offer 47. 礼物的最大价值 p233 -- Java Version
剑指 Offer 47. 礼物的最大价值。在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?原创 2023-04-06 19:16:36 · 287 阅读 · 0 评论 -
【LeetCode】剑指 Offer 46. 把数字翻译成字符串 p231 -- Java Version
剑指 Offer 46. 把数字翻译成字符串。给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。原创 2023-04-05 11:42:04 · 307 阅读 · 0 评论 -
【LeetCode】剑指 Offer 45. 把数组排成最小的数 p227 -- Java Version
剑指 Offer 45. 把数组排成最小的数。该题本质上是一个排序问题。 排序判断规则: 设 nums任意两数字的字符串格式 x 和 y,则 若拼接字符串 x + y > y + x,则 m > n; 反之,若 x + y < y + x,则 n < m; 根据以上规则,套用任何排序方法对 nums执行排序即可。原创 2023-04-04 14:12:28 · 318 阅读 · 0 评论 -
【LeetCode】剑指 Offer 44. 数字序列中某一位的数字 p225 -- Java Version
剑指 Offer 44. 数字序列中某一位的数字。数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。 请写一个函数,求任意第n位对应的数字。原创 2023-04-03 11:42:20 · 222 阅读 · 0 评论 -
【LeetCode】剑指 Offer 43. 1~n 整数中 1 出现的次数 p221 -- Java Version
剑指 Offer 43. 1~n 整数中 1 出现的次数。输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。原创 2023-04-01 15:56:52 · 167 阅读 · 0 评论 -
【LeetCode】剑指 Offer 42. 连续子数组的最大和 p218 -- Java Version
剑指 Offer 42. 连续子数组的最大和。输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。原创 2023-03-31 13:46:21 · 173 阅读 · 0 评论 -
【LeetCode】剑指 Offer 41. 数据流中的中位数 p214 -- Java Version
剑指 Offer 41. 数据流中的中位数。如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。原创 2023-03-30 13:49:36 · 266 阅读 · 0 评论 -
【LeetCode】剑指 Offer 40. 最小的k个数 p209 -- Java Version
剑指 Offer 40. 最小的k个数。输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。原创 2023-03-29 22:55:19 · 355 阅读 · 0 评论 -
【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字 p205 -- Java Version
剑指 Offer 39. 数组中出现次数超过一半的数字。数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。原创 2023-03-28 14:54:28 · 799 阅读 · 0 评论 -
【LeetCode】剑指 Offer 38. 字符串的排列 p197 -- Java Version
剑指 Offer 38. 字符串的排列。输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。原创 2023-03-27 20:45:23 · 505 阅读 · 0 评论 -
【LeetCode】剑指 Offer 37. 序列化二叉树 p194 -- Java Version
剑指 Offer 37. 序列化二叉树. 请实现两个函数,分别用来序列化和反序列化二叉树。原创 2023-03-26 16:36:05 · 160 阅读 · 0 评论 -
【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表 p191 -- Java Version
剑指 Offer 36. 二叉搜索树与双向链表。输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。原创 2023-03-25 20:02:44 · 335 阅读 · 0 评论 -
【LeetCode】剑指 Offer 35. 复杂链表的复制 p187 -- Java Version
剑指 Offer 35. 复杂链表的复制。请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。原创 2023-03-23 19:01:59 · 188 阅读 · 0 评论 -
【LeetCode】剑指 Offer 34. 二叉树中和为某一值的路径 p182 -- Java Version
剑指 Offer 34. 二叉树中和为某一值的路径。给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。原创 2023-03-22 20:32:32 · 383 阅读 · 0 评论 -
【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列 p179 -- Java Version
剑指 Offer 33. 二叉搜索树的后序遍历序列。输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。原创 2023-03-22 15:09:20 · 174 阅读 · 0 评论 -
【LeetCode】剑指 Offer 32. 从上到下打印二叉树 p171 -- Java Version
剑指 Offer 32 . 从上到下打印二叉树。包含三道题目:不分行从上到下打印二叉树,分行从上到下打印二叉树,以及之字形打印二叉树。原创 2023-03-21 17:05:00 · 402 阅读 · 0 评论 -
【LeetCode】剑指 Offer 31. 栈的压入、弹出序列 p168 -- Java Version
剑指 Offer 31. 栈的压入、弹出序列。输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。原创 2023-03-20 15:35:34 · 161 阅读 · 0 评论 -
【LeetCode】剑指 Offer 30. 包含min函数的栈 p165 -- Java Version
剑指 Offer 30. 包含min函数的栈。定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。原创 2023-03-20 14:27:40 · 290 阅读 · 0 评论 -
【LeetCode】剑指 Offer 29. 顺时针打印矩阵 p161 -- Java Version
剑指 Offer 29. 顺时针打印矩阵。输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。原创 2023-03-15 14:13:35 · 187 阅读 · 0 评论