摘要: "旋转字符串" 给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转) 样例 对于字符串 "abcdefg". offset=0 = "abcdefg" offset=1 = "gabcdef" offset=2 = "fgabcde" offset=3 = "efgabcd" 挑战 在数 阅读全文
posted @ 2017-05-04 17:11 LiBaoquan 阅读(987) 评论(0) 推荐(0)
摘要: "A + B 问题" 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 注意事项 你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行。 说明 a和b都是 32位 整数么? 是的 我可以使用位运算符么? 当然可以 样例 如果 a=1 并且 b=2 阅读全文
posted @ 2017-05-04 17:11 LiBaoquan 阅读(208) 评论(0) 推荐(0)
摘要: "搜索区间" 给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。 如果目标值不在数组中,则返回[ 1, 1] 样例 给出[5, 7, 7, 8, 8, 10]和目标值target=8, 返回[3, 4] 挑战 时间复杂度 O(log n) 标签 数组 排序数组 二分 阅读全文
posted @ 2017-05-04 17:11 LiBaoquan 阅读(324) 评论(0) 推荐(0)
摘要: "最近公共祖先" 给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。 最近公共祖先是两个节点的公共的祖先节点且具有最大深度。 注意事项 假设给出的两个节点都在树中存在 样例 对于下面这棵二叉树 LCA(3, 5) = 4 LCA(5, 6) = 7 LCA(6, 7) = 7 标签 LintC 阅读全文
posted @ 2017-05-04 17:11 LiBaoquan 阅读(346) 评论(0) 推荐(0)
摘要: "转换字符串到整数" 实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN( 2147483648)如果是负整数。 样例 "10" = 10 " 1" = 1 "12312 阅读全文
posted @ 2017-05-04 17:11 LiBaoquan 阅读(285) 评论(0) 推荐(0)
摘要: "删除排序链表中的重复元素" 给定一个排序链表,删除所有重复的元素每个元素只留下一个。 样例 给出 1 1 2 null,返回 1 2 null 给出 1 1 2 3 3 null,返回 1 2 3 null 标签 链表 思路 遍历树,得到根节点到目标节点的路径。 节点A和B分别得到两个路径数组pa 阅读全文
posted @ 2017-05-04 17:11 LiBaoquan 阅读(289) 评论(0) 推荐(0)
摘要: "二叉树的锯齿形层次遍历" 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 样例 给出一棵二叉树 {3,9,20, , ,15,7}, 返回其锯齿形的层次遍历为: [ & 160;& 160;& 160;& 160;[3], & 160;& 160; 阅读全文
posted @ 2017-05-04 17:11 LiBaoquan 阅读(205) 评论(0) 推荐(0)
摘要: "二叉树的最大深度" 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的距离。 样例 给出一棵如下的二叉树: 这个二叉树的最大深度为3. 标签 递归 分治法 二叉树 优步 code / Definition of TreeNode: class TreeNode { public 阅读全文
posted @ 2017-05-04 17:10 LiBaoquan 阅读(499) 评论(0) 推荐(0)
摘要: "落单的数" 给出2 n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。 样例 给出 [1,2,2,1,3,4,3],返回 4 挑战 一次遍历,常数级的额外空间复杂度 标签 贪心 code class Solution { public: / @param A: Arra 阅读全文
posted @ 2017-05-04 17:10 LiBaoquan 阅读(701) 评论(0) 推荐(0)
摘要: "翻转字符串" 给定一个字符串,逐个翻转字符串中的每个单词。 说明 单词的构成:无空格字母构成一个单词 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括 如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个 标签 字符串处理 code class Solution 阅读全文
posted @ 2017-05-04 17:10 LiBaoquan 阅读(821) 评论(0) 推荐(0)
摘要: "两数之和" 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。 注意事项 你可以假设只有一组答案。 样例 给出 numbers = [2, 阅读全文
posted @ 2017-05-04 17:10 LiBaoquan 阅读(844) 评论(0) 推荐(0)
摘要: "丑数 II" 设计一个算法,找出只含素因子2,3,5 的第 n 大的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 注意事项 我们可以认为1也是一个丑数 样例 如果n = 9, 返回 10 挑战 要求时间复杂度为O(nlogn)或者O(n) 标签 Lint 阅读全文
posted @ 2017-05-04 16:39 LiBaoquan 阅读(671) 评论(0) 推荐(0)
摘要: "统计数字" 计算数字k在0到n中的出现的次数,k可能是0~9的一个值 样例 例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12) 标签 枚举法 code class Solution { 阅读全文
posted @ 2017-05-04 16:39 LiBaoquan 阅读(736) 评论(0) 推荐(0)
摘要: "将数组重新排序以构造最小值" 给定一个整数数组,请将其重新排序,以构造最小值。 注意事项 The result may be very large, so you need to return a string instead of an integer. 样例 给定 [3, 32, 321],通 阅读全文
posted @ 2017-05-04 16:39 LiBaoquan 阅读(544) 评论(0) 推荐(0)
摘要: "第k大元素" 在数组中找到第k大的元素 注意事项 你可以交换数组中的元素的位置 样例 给出数组 [9,3,2,4,8],第三大的元素是 4 给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推 挑战 要求时间复杂度为O(n),空间复杂度为O(1) 阅读全文
posted @ 2017-05-04 16:39 LiBaoquan 阅读(687) 评论(0) 推荐(0)
摘要: "螺旋矩阵 II" 给你一个数n生成一个包含1 n^2的螺旋形矩阵 样例 n = 3 矩阵为 [ & 160;& 160;& 160;& 160;[ 1, 2, 3 ], & 160;& 160;& 160;& 160;[ 8, 9, 4 ], & 160;& 160;& 160;& 160;[ 7 阅读全文
posted @ 2017-05-04 16:38 LiBaoquan 阅读(449) 评论(0) 推荐(0)
摘要: "两个链表的交叉" 请写一个程序,找到两个单链表最开始的交叉节点。 注意事项 如果两个链表没有交叉,返回null。 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 样例 下列两个链表: 在节点 c1 开始交叉。 挑战 需满足 O(n) 时间复杂度,且仅用 O(1) 内存。 阅读全文
posted @ 2017-05-04 16:38 LiBaoquan 阅读(432) 评论(0) 推荐(0)
摘要: "最大子数组" 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 注意事项 子数组最少包含一个数 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6 挑战 要求时间复杂度为O(n) 标签 领英 子数组 贪心 枚举法 Lint 阅读全文
posted @ 2017-05-04 16:38 LiBaoquan 阅读(374) 评论(0) 推荐(0)
摘要: "逆序对" 在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的总数。 概括:如果a[i] a[j] 且 i 样例 序列 [2, 4, 1, 3, 5] 中,有 3 个逆序对 (2, 1), (4, 1), (4, 3),则返回 3 。 阅读全文
posted @ 2017-05-04 16:38 LiBaoquan 阅读(226) 评论(0) 推荐(0)
摘要: "主元素" 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。 注意事项 You may assume that the array is non empty and the majority number always exist in the array. 样例 阅读全文
posted @ 2017-05-04 16:38 LiBaoquan 阅读(417) 评论(0) 推荐(0)
摘要: "二叉树的层次遍历 II" 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 样例 给出一棵二叉树 {3,9,20, , ,15,7}, 按照从下往上的层次遍历为: [ & 160;& 160;& 160;& 160;[15,7], & 阅读全文
posted @ 2017-05-04 16:36 LiBaoquan 阅读(306) 评论(0) 推荐(0)
摘要: "二叉树的中序遍历" 给出一棵二叉树,返回其中序遍历。 样例 给出一棵二叉树 {1, ,2,3}, 返回 [1,3,2]. 挑战 你能使用非递归实现么? 标签 递归 二叉树 二叉树遍历 code / Definition of TreeNode: class TreeNode { public: i 阅读全文
posted @ 2017-05-04 16:36 LiBaoquan 阅读(197) 评论(0) 推荐(0)
摘要: "二叉树的前序遍历" 给出一棵二叉树,返回其节点值的前序遍历。 样例 给出一棵二叉树 {1, ,2,3}, 返回 [1,2,3]. 挑战 你能使用非递归实现么? 标签 递归 二叉树 二叉树遍历 非递归 code / Definition of TreeNode: class TreeNode { p 阅读全文
posted @ 2017-05-04 16:36 LiBaoquan 阅读(276) 评论(0) 推荐(0)
摘要: "带最小值操作的栈" 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。 你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。 注意事项 如果堆栈中没有数字则不能进行min方法的调用 样例 如下操作:push(1),pop(),push(2), 阅读全文
posted @ 2017-05-04 15:45 LiBaoquan 阅读(835) 评论(0) 推荐(0)
摘要: "复制带随机指针的链表" 给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。 返回一个深拷贝的链表。 挑战 可否使用O(1)的空间 标签 哈希表 链表 优步 code / Definition for singly linked list with a random 阅读全文
posted @ 2017-05-04 15:45 LiBaoquan 阅读(401) 评论(0) 推荐(0)
摘要: "二叉树的后序遍历" 给出一棵二叉树,返回其节点值的后序遍历。 样例 给出一棵二叉树 {1, ,2,3}, 返回 [3,2,1] 挑战 你能使用非递归实现么? 标签 递归 二叉树 二叉树遍历 code / Definition of TreeNode: class TreeNode { public 阅读全文
posted @ 2017-05-04 15:44 LiBaoquan 阅读(448) 评论(0) 推荐(0)
摘要: "将二叉查找树转换成双链表" 将一个二叉查找树按照中序遍历转换成双向链表。 样例 给定一个二叉查找树: 返回 12345。 标签 链表 code / Definition of TreeNode: class TreeNode { public: int val; TreeNode left, ri 阅读全文
posted @ 2017-05-04 15:44 LiBaoquan 阅读(379) 评论(0) 推荐(0)
摘要: "螺旋矩阵" 给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。 样例 给定如下矩阵: [ & 160;& 160;& 160;& 160;[ 1, 2, 3 ], & 160;& 160;& 160;& 160;[ 4, 5, 6 ], & 160 阅读全文
posted @ 2017-05-04 15:44 LiBaoquan 阅读(274) 评论(0) 推荐(0)
摘要: "二叉树的层次遍历" 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例 给一棵二叉树 {3,9,20, , ,15,7} : 返回他的分层遍历结果: [ & 160;& 160;& 160;& 160;[3], & 160;& 160;& 160;& 160;[9,20], & 16 阅读全文
posted @ 2017-05-04 15:44 LiBaoquan 阅读(629) 评论(0) 推荐(1)
摘要: "字符串置换" 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。 置换的意思是,通过改变顺序可以使得两个字符串相等。 样例 "abc" 为 "cba" 的置换。 "aabc" 不是 "abcc" 的置换。 标签 字符串处理 排列 code class Solution { 阅读全文
posted @ 2017-05-04 15:44 LiBaoquan 阅读(295) 评论(0) 推荐(0)
摘要: "克隆二叉树" 深度复制一个二叉树。 给定一个二叉树,返回一个他的 克隆品 。 样例 给定一个二叉树: 返回其相同结构相同数值的克隆二叉树: 标签 二叉树 code / Definition of TreeNode: class TreeNode { public: int val; TreeNod 阅读全文
posted @ 2017-05-04 15:44 LiBaoquan 阅读(757) 评论(0) 推荐(0)
摘要: "二叉树的路径和" 给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。 样例 给定一个二叉树,和 目标值 = 5: 返回: [ & 160;& 160;& 160;& 160;[1, 2, 2], & 160;& 160;& 160 阅读全文
posted @ 2017-05-04 15:44 LiBaoquan 阅读(621) 评论(0) 推荐(0)
摘要: "快速幂" 计算an % b,其中a,b和n都是32位的整数。 样例 例如 231 % 3 = 2 例如 1001000 % 1000 = 0 挑战 O(logn) 标签 分治法 code class Solution { public: / @param a, b, n: 32bit intege 阅读全文
posted @ 2017-05-04 14:20 LiBaoquan 阅读(404) 评论(0) 推荐(0)
摘要: "用递归打印数字" 用递归的方法找到从1到最大的N位整数。 注意事项 用下面这种方式去递归其实很容易: 但是这种方式会耗费很多的递归空间,导致堆栈溢出。你能够用其他的方式来递归使得递归的深度最多只有 N 层么? 样例 给出 N = 1, 返回[1,2,3,4,5,6,7,8,9]. 给出 N = 2 阅读全文
posted @ 2017-05-04 14:20 LiBaoquan 阅读(260) 评论(0) 推荐(0)
摘要: "合并两个排序链表" 将两个排序链表合并为一个新的排序链表 样例 给出 1 3 8 11 15 null,2 null, 返回 1 2 3 8 11 15 null。 标签 领英 链表 code / Definition of ListNode class ListNode { public: in 阅读全文
posted @ 2017-05-04 14:20 LiBaoquan 阅读(518) 评论(0) 推荐(0)
摘要: "删除链表中倒数第n个节点" 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项 链表中的节点个数大于等于n 样例 给出链表 1 2 3 4 5 null 和 n = 2. 删除倒数第二个节点之后,这个链表将变成 1 2 3 5 null . 挑战 O(n)时间复杂度 标签 链表 阅读全文
posted @ 2017-05-04 14:20 LiBaoquan 阅读(346) 评论(0) 推荐(0)
摘要: "子树" 有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完 阅读全文
posted @ 2017-05-04 14:20 LiBaoquan 阅读(355) 评论(0) 推荐(0)
摘要: "在O(1)时间复杂度删除链表节点" 给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。 样例 给定 1 2 3 4,和节点 3,删除 3 之后,链表应该变为 1 2 4。 标签 Cracking The Coding Interview 链表 code 阅读全文
posted @ 2017-05-04 14:19 LiBaoquan 阅读(253) 评论(0) 推荐(0)
摘要: "奇偶分割数组" 分割一个整数数组,使得奇数在前偶数在后。 样例 给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。 挑战 在原数组中完成,不使用额外空间。 标签 数组 两根指针 code class Solution { public: / @param nums: a vector 阅读全文
posted @ 2017-05-04 14:19 LiBaoquan 阅读(196) 评论(0) 推荐(0)
摘要: "中序遍历和后序遍历树构造二叉树" 根据中序遍历和后序遍历树构造二叉树 注意事项 你可以假设树中不存在相同数值的节点 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: & 160;& 160;2 & 160;/& 160;& 160;\ 1& 160;& 160 阅读全文
posted @ 2017-05-04 13:38 LiBaoquan 阅读(610) 评论(0) 推荐(0)
摘要: "搜索二维矩阵 II" 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。 这个矩阵具有以下特性: 每行中的整数从左到右是排序的。 每一列的整数从上到下是排序的。 在每一行或每一列中没有重复的整数。 样例 考虑下列矩阵: [ & 160;& 160;& 160;& 160; [1, 3 阅读全文
posted @ 2017-05-04 13:38 LiBaoquan 阅读(356) 评论(0) 推荐(0)
摘要: "用栈实现队列" 正如标题所述,你需要使用两个栈来实现队列的一些操作。 队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。 pop和top方法都应该返回第一个元素的值。 样例 比如 ,你应该返回1,2和2 挑战 仅使用两个栈来实现它,不 阅读全文
posted @ 2017-05-04 13:38 LiBaoquan 阅读(997) 评论(0) 推荐(0)
摘要: "空格替换" 设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。 你的程序还需要返回被替换后的字符串的长度。 注意事项 如果使用 Java 或 Python, 程序中请用字符数组表示字符串。 样例 对于字符串"Mr 阅读全文
posted @ 2017-05-04 13:37 LiBaoquan 阅读(582) 评论(0) 推荐(0)
摘要: "二进制中有多少个1" 计算在一个 32 位的整数的二进制表式中有多少个 1. 样例 给定 32 (100000),返回 1 给定 5 (101),返回 2 给定 1023 (111111111),返回 9 挑战 If the integer is n bits with m 1 bits. Can 阅读全文
posted @ 2017-05-04 13:37 LiBaoquan 阅读(570) 评论(1) 推荐(0)
摘要: "翻转链表" 翻转一个链表 样例 给出一个链表 1 2 3 null ,这个翻转后的链表为 3 2 1 null 挑战 在原地一次翻转完成 标签 链表 优步 脸书 code / Definition of ListNode class ListNode { public: int val; List 阅读全文
posted @ 2017-05-04 13:37 LiBaoquan 阅读(240) 评论(0) 推荐(0)
摘要: "寻找旋转排序数组中的最小值" 假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 你可以假设数组中不存在重复的元素。 注意事项 You may assume no duplicate exists in t 阅读全文
posted @ 2017-05-04 13:37 LiBaoquan 阅读(414) 评论(0) 推荐(0)
摘要: "前序遍历和中序遍历树构造二叉树" 根据前序遍历和中序遍历树构造二叉树. 注意事项 你可以假设树中不存在相同数值的节点 样例 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: & 160;& 160;2 & 160;/& 160;& 160;\ 1& 160;& 160;3 阅读全文
posted @ 2017-05-04 13:37 LiBaoquan 阅读(1256) 评论(0) 推荐(0)
摘要: "Fizz Buzz 问题" 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 样例 比如 n = 15, 返回一个字符串数组: [ & 160;& 160;& 阅读全文
posted @ 2017-05-04 13:36 LiBaoquan 阅读(302) 评论(0) 推荐(0)
摘要: "斐波纳契数列" 查找斐波纳契数列中第 N 个数。 所谓的斐波纳契数列是指: 前2个数是 0 和 1 。 第 i 个数是第 i 1 个数和第i 2 个数的和。 斐波纳契数列的前10个数字是: 注意事项 The Nth fibonacci number won't exceed the max val 阅读全文
posted @ 2017-05-04 13:36 LiBaoquan 阅读(225) 评论(0) 推荐(0)
摘要: "单例" 单例 是最为最常见的设计模式之一。对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计 模式为单例。例如,对于 class Mouse (不是动物的mouse哦),我们应将其设计为 singleton 模式。 你的任务是设计一个 方法,对于给定的类,每次调用 时,都可 阅读全文
posted @ 2017-05-04 13:36 LiBaoquan 阅读(431) 评论(0) 推荐(0)