随笔分类 -  剑指Offer

摘要:【题目描述】输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am student.",则输出"student. a am I"【解决方案】先翻转各个单词,再翻转整个句子。我的代码实现,仅供参考: 1 publ... 阅读全文
posted @ 2015-09-23 23:03 叫我霍啊啊啊 阅读(185) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s。如果有多对数字的和等于s,输出任意一队即可。【解决方案】设置前后指针,根据所指数字的和来移动前后指针,直到找到目标数字。我的代码实现,仅供参考: 1 public static bool Fin... 阅读全文
posted @ 2015-09-23 21:44 叫我霍啊啊啊 阅读(206) 评论(0) 推荐(0) 编辑
摘要:【题目描述】一个整型数组里除了两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。【解决方案】 1 public static void FindNumsAppearOnce(int[] data) 2 ... 阅读全文
posted @ 2015-09-23 00:12 叫我霍啊啊啊 阅读(182) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一棵二叉树的根结点,求该树的深度。【解决方案】递归解决。我的代码实现,仅供参考: 1 public static int TreeDepth(TreeNode root) 2 { 3 if (root == null) 4 ... 阅读全文
posted @ 2015-09-22 23:36 叫我霍啊啊啊 阅读(181) 评论(0) 推荐(0) 编辑
摘要:【题目描述】统计一个数字在排序数组中出现的次数。例如输入数组{1,2,3,3,3,3,4,5}和数字3,由于3在数组中出现了4次,因此输出4。【解决方案】解法一:先找到key的位置,然后往两边搜索,直到找到所有的key。时间复杂度O(n)。解法二:找到连续key左右两边的下边,然后相减加1,即为ke... 阅读全文
posted @ 2015-09-22 10:52 叫我霍啊啊啊 阅读(173) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入两个链表,找出它们的第一个公共结点。【解决方案】解法一:利用两个辅助栈,以此将两个链表的结点压入。然后分别弹出两个栈中的结点,直到找到最后一个相同的结点,即为它们的第一个公共结点。缺点:需要耗费O(m+n)空间复杂度;解法二:分别便利两个链表的长度,记录下两个链表的长度m,n (m>... 阅读全文
posted @ 2015-09-22 10:25 叫我霍啊啊啊 阅读(414) 评论(0) 推荐(0) 编辑
摘要:【题目描述】在数组中的两个数字如果前面一个数字大于后面的一个数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组的逆序对的总数。【解决方案】基于归并思想的解决方案。我的代码实现,仅供参考: 1 public static int InversePairs(int[] data... 阅读全文
posted @ 2015-09-21 15:51 叫我霍啊啊啊 阅读(191) 评论(0) 推荐(0) 编辑
摘要:【题目描述】在字符串中找出第一个只出现一次的字符,如输入"abaccdeff",则输出"b"。【解决方案】利用哈希表解决。我的代码实现,仅供参考: 1 public static char FirstNotRepeatChar(char[] str) 2 { 3 ... 阅读全文
posted @ 2015-09-21 11:00 叫我霍啊啊啊 阅读(175) 评论(0) 推荐(0) 编辑
摘要:【题目描述】我们把只包含因子2,3和5的数称作丑数,求按从小到大的顺序的第1500个丑数。例如6,8都是丑数,但是14不是,因为它包含因子7。习惯上,我们把1当做第一个丑数。【解决方案】解法一:逐个判断,直观但不够高效我的代码实现,仅供参考: 1 public static int ... 阅读全文
posted @ 2015-09-21 10:58 叫我霍啊啊啊 阅读(188) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一个正整数数组,把数组里所有的数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如,输入数组{3,32,321},则打印出这三个数字能排成的最小数字321323。【本题考点】1. 很难想出新的比较规则来排序一个数组;2. 很难证明根据这个规则排序之后的数组,把数字连接在即... 阅读全文
posted @ 2015-09-21 10:01 叫我霍啊啊啊 阅读(173) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一个整数n,求从1到n这个整数的十进制表示中1出现的次数。例如,输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。【解决方案】解法一:不考虑时间复杂度我的代码实现,仅供参考: 1 public static int NumOfOneF... 阅读全文
posted @ 2015-09-16 16:12 叫我霍啊啊啊 阅读(149) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一个整型数组,数组里有正数,也有负数。数组中一个或连续的多个整数组成的一个子数组,求所有子数组的最大值。要求时间复杂度为O(n)。【解决方案】解法一:举例分析数组的规律我的代码实现,仅供参考: 1 public static int FindGreatestSumOf... 阅读全文
posted @ 2015-09-16 15:52 叫我霍啊啊啊 阅读(165) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入n个整数,找出其中最小的k个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。【解决方案】测试用例:1. 功能测试(输入数组中有相同的数字,输入数组中没有相同的数字);2. 边界值测试(输入的k等于1或者等于数组的长度);3. 特殊情况测试(k小... 阅读全文
posted @ 2015-09-16 15:35 叫我霍啊啊啊 阅读(225) 评论(0) 推荐(0) 编辑
摘要:【题目描述】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。【解决方案】解法一:基于Partition函数的O(n)算法我的代码实现,仅供参考: 1 public static int MoreThanHalfNum(int[] arr) 2 { 3 ... 阅读全文
posted @ 2015-09-14 16:20 叫我霍啊啊啊 阅读(189) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一个字符串,打印出该字符串中字符的所有排列。【解决方案】递归,依次与其后数字交换,交换一次,输出一次。我的代码实现,仅供参考: 1 public static void Permutation(char[] str, int start) 2 { 3 ... 阅读全文
posted @ 2015-09-14 15:58 叫我霍啊啊啊 阅读(174) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树种结点指针的指向。【解决方案】我的代码实现,仅供参考: 1 public static BinaryTreeNode Convert(BinaryTreeNode root) ... 阅读全文
posted @ 2015-09-14 15:57 叫我霍啊啊啊 阅读(188) 评论(0) 推荐(0) 编辑
摘要:【题目描述】请实现函数ComplexListNode* Clone(ComplexListNode* pHead)。复制一个复杂链表,每个结点,除了有一个m_pNext指针指向下一个结点,还有一个m_pSibling指向链表中的任意结点或者null。【解决方案】方法二:我的代码实现,仅供参考: 1 ... 阅读全文
posted @ 2015-09-14 15:56 叫我霍啊啊啊 阅读(147) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶节点所经过的结点形成一条路径。【解决方案】用栈来存储路径,递归调用来遍历各个路径,如果符合条件,则进行打印。考虑测试用例:1. 二叉树中有一条或多条符合条件的路径;2. 二叉树中没有符合条... 阅读全文
posted @ 2015-09-14 15:43 叫我霍啊啊啊 阅读(164) 评论(0) 推荐(0) 编辑
摘要:【题目描述】输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。假设输入的数组的任意两个数字都互不相等。【解决方案】后续遍历的最后一个结点为二叉树的根节点,根据BST的特性,数组中前半部分比根节点大的为其左子树的节点,比他小的为其右子树结点,可以递归解决。考虑情况:1. 完全二叉树;2.... 阅读全文
posted @ 2015-09-14 11:12 叫我霍啊啊啊 阅读(184) 评论(0) 推荐(0) 编辑
摘要:【题目描述】从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。【解决方案】利用队列实现。我的代码实现,仅供参考: 1 public static void PrintTopToBottom(BinaryTreeNode node) 2 { 3 ... 阅读全文
posted @ 2015-09-14 10:52 叫我霍啊啊啊 阅读(171) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示