随笔分类 -  剑指offer

摘要:面试题68 - I. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 阅读全文
posted @ 2020-04-05 18:23 海绵爱上星 阅读(160) 评论(0) 推荐(0)
摘要:面试题65. 不用加减乘除做加法 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a = 1, b = 1 输出: 2 提示: a, b 均可能是负数或 0 结果不会溢出 32 位整数 class Solution { public 阅读全文
posted @ 2020-04-05 17:27 海绵爱上星 阅读(117) 评论(0) 推荐(0)
摘要:面试题64. 求1+2+…+n 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1: 输入: n = 3 输出: 6 示例 2: 输入: n = 9 输出: 45 限制: 1 <= n <= 100 阅读全文
posted @ 2020-04-05 17:12 海绵爱上星 阅读(158) 评论(0) 推荐(0)
摘要:面试题10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就 阅读全文
posted @ 2020-04-05 15:10 海绵爱上星 阅读(159) 评论(0) 推荐(0)
摘要:面试题11. 旋转数组的最小数字(无重复元素) 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5 阅读全文
posted @ 2020-04-05 14:53 海绵爱上星 阅读(135) 评论(0) 推荐(0)
摘要:面试题12. 矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路 阅读全文
posted @ 2020-04-05 14:29 海绵爱上星 阅读(115) 评论(0) 推荐(0)
摘要:面试题13. 机器人的运动范围 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 阅读全文
posted @ 2020-04-05 13:55 海绵爱上星 阅读(146) 评论(0) 推荐(0)
摘要:面试题14- II. 剪绳子 II 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0]*k[1]*...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别 阅读全文
posted @ 2020-04-05 13:31 海绵爱上星 阅读(101) 评论(0) 推荐(0)
摘要:面试题16. 数值的整数次方 实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.1000 阅读全文
posted @ 2020-04-05 01:18 海绵爱上星 阅读(117) 评论(0) 推荐(0)
摘要:19. 正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字 阅读全文
posted @ 2020-04-05 00:09 海绵爱上星 阅读(184) 评论(0) 推荐(0)
摘要:面试题22. 链表中倒数第k个节点 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1- 阅读全文
posted @ 2020-04-04 23:12 海绵爱上星 阅读(95) 评论(0) 推荐(0)
摘要:面试题26. 树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同 阅读全文
posted @ 2020-04-04 22:41 海绵爱上星 阅读(96) 评论(0) 推荐(0)
摘要:面试题27. 二叉树的镜像 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3, 阅读全文
posted @ 2020-04-04 22:17 海绵爱上星 阅读(107) 评论(0) 推荐(0)
摘要:面试题30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); 阅读全文
posted @ 2020-04-04 21:38 海绵爱上星 阅读(111) 评论(0) 推荐(0)
摘要:面试题31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能 阅读全文
posted @ 2020-04-04 21:21 海绵爱上星 阅读(191) 评论(0) 推荐(0)
摘要:面试题32 - III. 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / 阅读全文
posted @ 2020-04-04 20:53 海绵爱上星 阅读(91) 评论(0) 推荐(0)
摘要:面试题32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 提示: 节点总数 <= 1000 clas 阅读全文
posted @ 2020-04-04 00:36 海绵爱上星 阅读(117) 评论(0) 推荐(0)
摘要:面试题33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3 示例 1: 输入: [1,6,3,2,5] 输出 阅读全文
posted @ 2020-04-04 00:20 海绵爱上星 阅读(161) 评论(0) 推荐(0)
摘要:面试题34. 二叉树中和为某一值的路径 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 阅读全文
posted @ 2020-04-04 00:06 海绵爱上星 阅读(135) 评论(0) 推荐(0)
摘要:面试题35. 复杂链表的复制 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head = [[7,null],[13,0],[11,4] 阅读全文
posted @ 2020-04-03 23:24 海绵爱上星 阅读(140) 评论(0) 推荐(0)