
剑指offer
文章平均质量分 91
图书《剑指offer》的面试题的个人解题思路和java解法
程序员大航子
现就职于抖音集团 | 在南方发展的不正经东北人 | 互联网苟且偷生的JAVA开发 | 面试人数超200人 | 关注我不迷路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer | 面试题15:二进制中1的个数
转载本文章请标明作者和出处本文出自《爱喝纯净水的南荣牧歌》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2;示例 1:输入:00000000000000000000...原创 2020-04-02 18:41:25 · 441 阅读 · 1 评论 -
剑指offer | 面试题12:矩阵中的路径
转载本文章请标明作者和出处本文出自《爱喝纯净水的南荣牧歌》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下...原创 2020-03-27 02:09:38 · 415 阅读 · 1 评论 -
剑指offer | 面试题4:二维数组中的查找
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数;示例现有矩阵 matrix 如下...原创 2020-03-17 21:57:27 · 336 阅读 · 1 评论 -
剑指offer | 面试题3:数组中重复的数字
转载本文章请标明作者和出处本文出自《爱喝纯净水的南荣牧歌》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字;示例1输...原创 2020-03-17 01:40:56 · 387 阅读 · 1 评论 -
剑指offer | 面试题11:旋转数组的最小数字
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1;...原创 2020-03-16 13:40:52 · 306 阅读 · 1 评论 -
剑指offer | 面试题57:和为s的两个数字
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可;示例 1输入:nums = [2,7,11,15], target = 9输出:[2,7...原创 2020-03-15 01:04:31 · 355 阅读 · 1 评论 -
剑指offer | 面试题63:股票的最大利润
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例一输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股...原创 2020-03-14 01:57:40 · 443 阅读 · 1 评论 -
剑指offer | 面试题47:礼物的最大价值
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多...原创 2020-03-13 13:56:41 · 514 阅读 · 1 评论 -
剑指offer | 面试题5:替换空格
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目请实现一个函数,把字符串 s 中的每个空格替换成"%20"示例输入:s = "We are happy."输出:"We%20are%20happy."解题分析这道题比较简单,但是有点意外的是,我做完之后...原创 2020-03-13 01:34:08 · 321 阅读 · 0 评论 -
剑指offer | 面试题66:构建乘积数组
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法示例输入: [1,2...原创 2020-03-12 13:45:06 · 96137 阅读 · 1 评论 -
剑指offer | 面试题40:最小的k个数
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入整数数组 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] 或者 ...原创 2020-03-11 21:26:41 · 671 阅读 · 1 评论 -
剑指offer | 面试题30:包含min函数的栈
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)示例MinStack minStack = new MinStack...原创 2020-03-09 13:49:55 · 428 阅读 · 0 评论 -
剑指offer | 面试题9:用两个栈实现队列
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )...原创 2020-03-08 18:08:13 · 439 阅读 · 1 评论 -
剑指offer | 面试题34:二叉树中和为某一值的路径
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22,返回[ [5,4...原创 2020-03-08 02:05:19 · 350 阅读 · 1 评论 -
剑指offer | 面试题33:二叉搜索树的后序遍历序列
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同;参考以下这颗二叉搜索树:示例 1:输入: [1,6,3,2,5...原创 2020-03-03 01:38:28 · 504 阅读 · 0 评论 -
剑指offer | 面试题21:调整数组顺序使奇数位于偶数前面
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜...原创 2020-02-29 03:07:51 · 406 阅读 · 1 评论 -
剑指offer | 面试题68 - II. 二叉树的最近公共祖先
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也...原创 2020-02-28 01:24:27 · 402 阅读 · 1 评论 -
剑指offer | 面试题68 - I.二叉搜索树的最近公共祖先
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节...原创 2020-02-26 23:37:00 · 586 阅读 · 0 评论 -
剑指offer | 面试题18:删除链表的节点
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点;返回删除后的链表的头节点;此次照原题有些许改动,参照leetcode删除节点5;解题分析首先,这道题,我们要知道,单向链表的特点,单向链...原创 2020-02-26 00:48:15 · 1265 阅读 · 1 评论 -
剑指offer | 面试题55 - II. 平衡二叉树
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树;给定如图的二叉树,返回true;解题分析什么是平衡二叉树,在题干中就给出了解释;所谓平...原创 2020-02-25 00:08:37 · 2413 阅读 · 1 评论 -
剑指offer | 面试题55 - I.二叉树的深度
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度;给定如图的二叉树,返回它的最大深度3;解题分析求最大的深度,我们常规来想需要探索到每一...原创 2020-02-24 13:00:33 · 7910 阅读 · 1 评论 -
剑指offer | 面试题53 - I.数字在排序数组中出现的次数
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目统计一个数字在排序数组中出现的次数示例:输入: nums = [5,7,7,8,8,10], target = 8输出: 2解题分析首先我们分析一下题干,一个排序的数组,我们应该下意识的相到,排序的数组,百分之9...原创 2020-02-23 18:07:07 · 7972 阅读 · 0 评论 -
剑指offer | 面试题53 - II. 0~n-1中缺失的数字
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字示例:输入: [0,1,3]输出: 2解题分析首...原创 2020-02-23 16:08:41 · 9881 阅读 · 1 评论 -
剑指offer | 面试题7:重建二叉树
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建...原创 2020-02-22 23:09:09 · 1170 阅读 · 1 评论 -
剑指offer | 面试题54:二叉搜索树的第k大节点
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目给定一棵二叉搜索树,请找出其中的第k小的结点。例如, 如下图(5,3,7,2,4,6,8) 中,按节点数值大小顺序第三小结点的值为4二叉树的定义如下:public class TreeNode { in...原创 2020-02-22 01:47:48 · 8761 阅读 · 1 评论 -
剑指offer | 面试题25:合并两个排序的链表
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是依照递增排序的。例如链表1和链表2合并之后的升序链表就是链表3;链表定义如下:public class ListNode { // 链表值 ...原创 2020-02-20 22:24:49 · 8782 阅读 · 0 评论 -
剑指offer | 面试题52:两个链表的第一个公共节点
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入两个链表,找出它们的第一个公共节点;如下,第一个公共节点为节点6;解题分析首先以图示例,图中有两个链表相交与节点6,问公共节点是什么?这道题第一个我的想法是使用哈希表(HashMap)来解决,我们可以首先找一...原创 2020-02-19 16:21:35 · 9914 阅读 · 0 评论 -
剑指offer | 面试题42:连续子数组的最大和
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如:输入的数组为{1, -2, 3, 10, -4, 7, 2, -5},和最大的子...原创 2020-02-19 02:08:26 · 10516 阅读 · 0 评论 -
剑指offer | 面试题27:二叉树的镜像
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目请完成一个函数,输入一颗二叉树,该函数出处它的镜像。二叉树的节点定义如下public class TreeNode { public int val; public TreeNode left; ...原创 2020-02-18 15:09:50 · 11511 阅读 · 0 评论 -
剑指offer | 面试题23:链表中环的入口结点
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目一个链表中包含环,如何找出环的入口结点?如下图,环的入口节点是3解题分析这道题,首选用我们程序员的思维抽象一下,其实就是在遍历链表的时候找到第一个重复节点,这个节点就是入环点,如果遍历的过程中,写一个节点是空的话,就...原创 2020-02-18 00:52:17 · 83164 阅读 · 0 评论 -
剑指offer | 面试题39:数组中出现次数超过一半的数字
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题分析...原创 2020-02-17 16:05:03 · 13174 阅读 · 0 评论 -
剑指offer | 面试题24:反转链表
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转过后的链表的头节点。链表的节点定义如下:public class ListNode { // 链表值 public int val; /...原创 2020-02-17 00:38:16 · 13709 阅读 · 0 评论 -
剑指offer | 面试题22:链表中倒数第k个节点
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4...原创 2020-02-16 21:31:52 · 11408 阅读 · 0 评论 -
剑指offer | 面试题32:从上到下打印二叉树
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目本题目经过拓展一共分三道;(图一)题目一 | 不分行从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。如图一,则依次打印:3,9,20,15,7题目二 | 分行从上到...原创 2020-02-16 20:49:25 · 11240 阅读 · 0 评论 -
剑指offer | 面试题10:斐波那切数列
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目求斐波那契数列的第n项。斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0;F(1) = 1;F(N) = F(N...原创 2020-02-15 21:16:48 · 10226 阅读 · 0 评论 -
剑指offer | 面试题6:从尾到头打印链表
转载本文章请标明作者和出处本文出自《Darwin的程序空间》本文题目和部分解题思路来源自《剑指offer》第二版开始行动,你已经成功一半了,献给正在奋斗的我们题目输入一个链表(单向链表)的头节点,从尾到头反过来打印出每个节点的值。链表的节点定义如下:public class ListNode { // 链表值 public int val; // 下一...原创 2020-02-15 19:46:54 · 9840 阅读 · 0 评论 -
剑指offer | 面试题61:扑克牌中的顺子
剑指offer | 面试题61:扑克牌中的顺子转载本文章请标明作者和出处本文出自《Darwin的程序空间》https://blog.youkuaiyun.com/qq_36929361开始行动,你已经成功一半了,献给正在奋斗的我们题目从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。且大小王能够当做任意一张牌。解题分析做这道题,首先我们需要把扑克牌抽象成计算机语言,其中...原创 2020-02-15 16:51:30 · 10064 阅读 · 0 评论