
剑指offer
猪小小_up
这个作者很懒,什么都没留下…
展开
-
面试题13:在O(1)时间删除链表节点
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。该题目是经常会遇到的一种题型,但大多数人第一想到的删除节点的方法是找到节点的前一个节点,让其指向删除节点的下一个节点,然后删除该节点,但是这样做的时间复杂度是O(n),不符合面试官的要求。分析:分成三种情况进行分析:(1)删除节点不是尾节点:找到删除节点的下一个节点next,将next节点的值赋值给删除节点原创 2014-12-24 14:03:36 · 612 阅读 · 0 评论 -
面试题23:从上往下打印二叉树
题目:从上往下打印出二叉树的每个节点,同一层的节点按照从左往右的顺序打印。分析:本题考查树的层次遍历,是树的考查题目中一个基本的应该掌握的题型。有了结合队列的想法,基本就能够解决这个题目。原创 2014-12-26 16:35:48 · 509 阅读 · 0 评论 -
面试题22:栈的压入、弹出队列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压入序列,序列4、5、3、2、1是该压入序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压入序列的弹出序列。分析:定义一个栈存放压入序列,判断的关键是看该栈的栈顶元素与要压入的下一个数字是否相等。测试:(1)基本功能测试:两个原创 2014-12-26 16:23:52 · 675 阅读 · 0 评论 -
面试题21:包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push、及pop的时间复杂度都是O(1)。分析:有时候用一个例子来帮助构思算法有时候会使问题变得简单。在这个问题中我们需要用到一个辅助栈。原创 2014-12-26 15:43:51 · 549 阅读 · 0 评论 -
面试题20:顺时针打印矩阵
题目:输入一个矩阵,按照从外向里顺时针的顺序依次打印出每个数字。分析:这个问题比较复杂,借助画出图形分析相对会简便一些。我们将矩阵想象成若干个圆,用一个循环来打印矩阵,每次打印矩阵中的一个圆。圆的起点是左上角(start,start),循环条件是columns>startX*2并且rows>rowsY*2。难点:for循环比较多,注意控制循环的结束条件。原创 2014-12-25 17:46:42 · 467 阅读 · 0 评论 -
面试题18:树的子结构
题目:输入两棵二叉树A和B,判断B是不是A的子结构。分析:分成两步:第一步在树A中找到和B的根结点一样的节点R;第二步判断以树A的R为根结点的子树是不是包含和B一样的结构。注意:树的题目有很多的指针操作,一定要分析和处理NULL的情况。原创 2014-12-25 14:20:24 · 445 阅读 · 0 评论 -
面试题19:二叉树的镜像
题目:完成一个函数,输入一个二叉树,该函数输出它的镜像。分析:首先要清楚镜像的意思,然后用递归的方式实现起来比较简单。树的镜像是一个比较抽象的概念,应聘者可以用画图的方法把抽象的问题形象化,有助于快速找到解题思路。原创 2014-12-25 16:37:10 · 496 阅读 · 0 评论 -
面试题17:合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照有序递增排列的。分析:这道题也是一道常见基础题,应该掌握。提升:尝试用递归的方法写出算法。用例:(1)功能测试:输入的两个链表具有多个节点,节点的值互不相同或者存在值相等的多个节点。(2)特殊测试:两个链表的一个或者头节点为NULL 指针,两个链表中只有一个节点。原创 2014-12-24 15:53:42 · 488 阅读 · 0 评论 -
面试题16:反转链表
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头结点。分析:这是一个比较基础也是面试官比较喜欢考察的题型,一定要掌握。测试用例:(1)链表头指针为NULL;(2)输入的链表只有一个节点;(3)输入的链表有多个节点。原创 2014-12-24 15:43:08 · 421 阅读 · 0 评论 -
面试题14:调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。分析:这个题目比较简单,用两个指针分别指向数组的开头和结尾,两个指针分别往右移动和往左移动,当第一个指针小于第二个指针,且遇到第一个指针是偶数而第二个指针是奇数,则交换两个数值,直到一个指针不小于第二个指针。提升:降低函数的耦合性,使其具有更好的拓展性。原创 2014-12-24 14:37:17 · 535 阅读 · 0 评论 -
面试题24:二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉树搜索树的后续遍历的结果。如果是返回true,不是返回false。分析:这是二叉搜索树的一种常见考察题型,有一种固定的思路要掌握。原创 2014-12-30 10:27:30 · 570 阅读 · 0 评论