
剑指offer
文章平均质量分 51
熊七七
在此磨刀
展开
-
【剑指offer】Fizz Buzz 问题
给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:如果这个数被3整除,打印fizz.如果这个数被5整除,打印buzz.如果这个数能同时被3和5整除,打印fizz buzz.样例比如 n = 15, 返回一个字符串数组:[ "1", "2", "fizz", "4", "buzz", "fizz", "7", "8", "fi原创 2017-06-17 09:13:28 · 233 阅读 · 0 评论 -
【剑指offer】合并两个排序链表
描述:将两个排序链表合并为一个新的排序链表样例:给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。Java代码:/** * Definition for ListNode. * public class ListNode { * int val; * Lis原创 2017-06-20 10:58:40 · 178 阅读 · 0 评论 -
【剑指offer】翻转链表
描述:翻转一个链表样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->nullJava代码:/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val)原创 2017-06-20 11:01:09 · 183 阅读 · 0 评论 -
【剑指offer】用递归打印数字
描述:用递归的方法找到从1到最大的N位整数。 注意事项用下面这种方式去递归其实很容易:recursion(i) { if i > largest number: return results.add(i) recursion(i + 1)}但是这种方式会耗费很多的递归空间,导致堆栈溢出。你能够用其他的方式来递归使得递归的深原创 2017-06-20 11:05:37 · 189 阅读 · 0 评论 -
【剑指offer】快速幂
描述:计算an % b,其中a,b和n都是32位的整数。样例:例如 231 % 3 = 2例如 1001000 % 1000 = 0Java代码:class Solution { /* * @param a, b, n: 32bit integers * @return: An integer */原创 2017-06-20 11:09:28 · 192 阅读 · 0 评论 -
【剑指offer】二叉树的路径和
描述:给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。一个有效的路径,指的是从根节点到叶节点的路径。样例:给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \ 2 3返回:[ [1, 2, 2], [1, 4]]Java代码:二叉树:先序遍历(根原创 2017-06-21 11:55:48 · 204 阅读 · 0 评论 -
【剑指offer】克隆二叉树
描述:深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例:给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5Java代码:/** * Definition of TreeN原创 2017-06-21 11:58:34 · 192 阅读 · 0 评论 -
【剑指offer】字符串置换
描述:给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。置换的意思是,通过改变顺序可以使得两个字符串相等。样例:"abc" 为 "cba" 的置换。"aabc" 不是 "abcc" 的置换。Java代码:字符串a,b的每一个字符都哈希到一个map里,a的字符加1,b的字符减1,统计为0 的时候删除字符,最后判原创 2017-06-22 10:10:18 · 336 阅读 · 0 评论 -
【剑指offer】二叉树的后序遍历
描述:给出一棵二叉树,返回其节点值的后序遍历。样例:给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]java 代码:/** * Definition of TreeNode: * public class TreeNode { * public int val; *原创 2017-06-25 23:04:10 · 159 阅读 · 0 评论 -
【剑指offer】将二叉查找树转换成双链表
描述:将一个二叉查找树按照中序遍历转换成双向链表。样例:给定一个二叉查找树: 4 / \ 2 5 / \1 3返回 12345。Java代码:/** * Definition of TreeNode: * public class TreeNode { * public int val; * publ原创 2017-06-28 15:38:43 · 151 阅读 · 0 评论 -
【剑指offer】螺旋矩阵
描述:给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。样例:给定如下矩阵:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]应返回 [1,2,3,6,9,8,7,4,5]。Java代码:public class Solution { /**原创 2017-06-28 15:40:54 · 330 阅读 · 0 评论 -
【剑指offer】二叉树的中序遍历
描述:给出一棵二叉树,返回其中序遍历样例:给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].Java代码:/** * Definition of TreeNode: * public class TreeNode { * public int val; * public原创 2017-06-28 15:45:30 · 171 阅读 · 0 评论 -
【剑指offer】删除链表中倒数第n个节点
描述:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项链表中的节点个数大于等于n样例:给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.Java代码:前后两个指针,第一个先走n步,然后两个一起走,第一个到达链表尾部时,第二个就是要删原创 2017-06-20 10:50:35 · 244 阅读 · 0 评论 -
【剑指offer】子树
描述:有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。样例:下面的例子中 T2 是 T1 的子树:原创 2017-06-20 10:46:07 · 167 阅读 · 0 评论 -
【剑指offer】二叉树的层次遍历 II
描述:给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)样例:给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7按照从下往上的层次遍历为:[ [15,7], [9,20], [3]]Java原创 2017-06-28 15:48:53 · 201 阅读 · 0 评论 -
【剑指offer】斐波纳契数列
查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... 注意事项The Nth fibonacci number won't exceed the max va原创 2017-06-17 09:18:49 · 162 阅读 · 0 评论 -
【剑指offer】单例
单例 是最为最常见的设计模式之一。对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计模式为单例。例如,对于 class Mouse (不是动物的mouse哦),我们应将其设计为 singleton 模式。你的任务是设计一个 getInstance 方法,对于给定的类,每次调用 getInstance时,都可得到同一个实例。样例在 Java 中:A原创 2017-06-17 09:22:15 · 121 阅读 · 0 评论 -
【剑指offer】空格替换
设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。你的程序还需要返回被替换后的字符串的长度。样例对于字符串"Mr John Smith", 长度为 13替换空格之后,参数中的字符串需要变为"Mr%20John%20Smith",并且把新长度 17 作为结果返回。先原创 2017-06-17 09:27:29 · 134 阅读 · 0 评论 -
【剑指offer】二进制中有多少个1
描述:计算在一个 32 位的整数的二进制表式中有多少个 1.样例:给定 32 (100000),返回 1给定 5 (101),返回 2给定 1023 (111111111),返回 9Java代码:num num乘以2。右边补0>>:右移运算符,num >> 1,相当于num除以2。正数左边补0,负数左边补1>>>:无符号右移,忽略符号位,原创 2017-06-17 09:39:09 · 171 阅读 · 0 评论 -
【剑指offer】翻转链表
描述:翻转一个链表样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->nullJava代码:一个指针指旧list一个指针指新list一个临时指针头插法/** * Definition for ListNode. * public class ListNode { * int val; *原创 2017-06-17 09:41:56 · 155 阅读 · 0 评论 -
【剑指offer】寻找旋转排序数组中的最小值
描述:假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。你需要找到其中最小的元素。你可以假设数组中不存在重复的元素。 注意事项You may assume no duplicate exists in the array.样例:给出[4,5,6,7,0,1,2] 返回原创 2017-06-17 09:45:23 · 229 阅读 · 0 评论 -
【剑指offer】前序遍历和中序遍历树构造二叉树
原文链接:http://www.jianshu.com/p/2a2489b1f873描述:根据前序遍历和中序遍历树构造二叉树. 注意事项你可以假设树中不存在相同数值的节点样例:给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \1 3Java代码:首先还是对数组进行判断,如果前序遍转载 2017-06-17 09:50:18 · 214 阅读 · 0 评论 -
【剑指offer】用栈实现队列
描述:正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。样例:比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2原创 2017-06-17 09:52:27 · 151 阅读 · 0 评论 -
【剑指offer】搜索二维矩阵 II
描述:写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。样例:考虑下列矩阵:[ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 10]]给出ta原创 2017-06-17 09:56:18 · 321 阅读 · 0 评论 -
【剑指offer】奇偶分割数组
描述:分割一个整数数组,使得奇数在前偶数在后。样例:给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。Java代码:public class Solution { /** * @param nums: * an array of integers * @return: nothing */ public v原创 2017-06-17 10:15:26 · 209 阅读 · 0 评论 -
【剑指offer】在O(1)时间复杂度删除链表节点
描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。样例:给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4。Java代码:非表头或表尾时,将下个点的值复制到要删除的节点中,然后将下一个节点删掉。/** * Definition for ListNode. * p原创 2017-06-19 12:42:30 · 337 阅读 · 0 评论 -
【剑指offer】二叉树的前序遍历
描述:给出一棵二叉树,返回其节点值的前序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].Java代码:/** * Definition of TreeNode: * public class TreeNode { * public int val; *原创 2017-06-28 15:47:07 · 165 阅读 · 0 评论