E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
剑指Offer面试题
剑指Offer面试题
:10.数值的整数次方
一、题目:数值的整数次方题目:实现函数doublePower(doublebase,intexponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。在.NETFramework提供的BCL中,Math类实现了一个Pow方法,例如要求2的三次方,可以通过以下代码实现:doubleresult=Math.Pow(2,3);本题就是要实现一个类似于该Pow方法的功能。
Edison Chou
·
2015-08-24 23:00
剑指offer面试题
26-复杂链表的复制
题目:请实现函数ComplexListNode*Clone(ComplexListNode*pHead),复制一个复杂链表。在复杂链表中,每一个节点除了一个m_pNext指针指向下一个节点外,还有一个m_pSibling指向链表中的任意节点或者NULL,节点的定义如下:packagecom.aii.algorithm; publicclassNode{ intvalue; Nodenext; N
q291611265
·
2015-08-24 23:00
链表
复制
复杂链表
剑指offer面试题
25-二叉树中和为某一值的路径
题目:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。其实就是树的遍历。在遍历的同时记录下来轨迹。打印的时候需要查看轨迹:从头到尾往下走的时候需要往轨迹的末尾加:往上反的时候需要往轨迹的末尾减:所以这里使用LinkedList把。。树的定义如下:packagecom.aii.algorithm; publiccla
q291611265
·
2015-08-24 22:00
剑指offer面试题
24-二叉搜索树的后序遍历序列
题目:/* *输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。 *如果是则返回true,否则返回false。 *假设输入的数组的任意两个数组都互不相同 **/既然是后序遍历,那么根元素肯定是在最后一个。又应该为二叉搜索树,所以左边一半的肯定比根要小,右边一半的比根要大。现在有了根,就可以把剩下的数组根据比根小与比根大的分割线分成两半。然后再递归判断。什么时候返回false:当确定了
q291611265
·
2015-08-24 17:00
二叉搜索树
后序遍历
剑指offer面试题
23-从上往下打印二叉树
题目: 从上往下打印出二叉树的每个节点,每一层的节点展昭从左到右的顺序打印。就是树的广度遍历。用队列,把树的子节点放到队列中。publicclassBinaryTreeNode{ Integervalue; BinaryTreeNodeleft; BinaryTreeNoderight; publicBinaryTreeNode(Integervalue){ this.value=value;
q291611265
·
2015-08-24 16:00
二叉树广度遍历
剑指offer面试题
21-包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push,pop的时间复杂度都是O(1)publicclassStackWithMin{ privateStackstack=null; privateStackminStack=null; publicStackWithMin(){ stack=newStack(); minStack=new
q291611265
·
2015-08-24 16:00
剑指offer面试题
20-顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。如:1-2-3-45-6-7-89-10-11-1213-14-15-16的矩阵,打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.一个二维数组,打印的第一轮的起点肯定是(0,0),第二轮(如果有的话)起点为(1,1)。那第n轮肯定就是(n-1,n-1)了。那么从(0,0)开始到多少截至呢?
q291611265
·
2015-08-24 16:00
矩阵
顺时针打印
剑指Offer面试题
:9.二进制中1的个数
一、题目:二进制中1的个数题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。二、可能引起死循环的解法一个基本的思路:先判断整数二进制表示中最右边一位是不是1。接着把输入的整数右移一位,此时原来处于从右边数起的第二位被移到最右边了,再判断是不是1。这样每次移动一位,直到整个整数变成0为止。怎么判断一个整数的最右
Edison Chou
·
2015-08-24 00:00
剑指offer面试题
18-树的子结构
题目:输入两颗二叉树A和B,判断B是不是A的子结构。树的结构如下:packagecom.aii.algorithm; publicclassTreeNode{ intvalue; TreeNodeleft; TreeNoderight; publicTreeNode(intvalue){ this.value=value; } } 全在注释上:packagecom.aii.algorithm
q291611265
·
2015-08-23 20:00
递归
遍历
子树
剑指offer面试题
16-反转链表
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表结构如下packagecom.aii.algorithm; publicclassNode{ intvalue; Nodenext; publicNode(intvalue){ this.value=value; } @Override publicStringtoString(){ return"Node[v
q291611265
·
2015-08-23 19:00
链表
反转
剑指offer面试题
17-合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是按照递增排序的。链表结构如下:packagecom.aii.algorithm; publicclassNode{ intvalue; Nodenext; publicNode(intvalue){ this.value=value; } @Override publicStringtoString(){ return"No
q291611265
·
2015-08-23 19:00
链表
合并
剑指Offer面试题
:8.斐波那契数列
一、题目:斐波那契数列题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下:二、效率很低的解法很多C/C++/C#/Java语言教科书在讲述递归函数的时候,大多都会用Fibonacci作为例子,因此我们会对这种解法烂熟于心:publicstaticlongFibonacciRecursively(uintn) { if(n<=0) { return
Edison Chou
·
2015-08-23 10:00
剑指offer面试题
15-链表中倒数第k个节点
题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如一个链表有6个节点,从头结点开始他们的值依次是1、2、3、4、5、6,这个链表的倒数第3个节点的是值为4的节点。链表结构如下:packagecom.aii.algorithm; publicclassNode{ intvalue; Nodenext; publicNod
q291611265
·
2015-08-22 21:00
链表
倒数
剑指offer面试题
14-调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。前后分的这个,,让我想起来快速排序,好吧,就用这个做。考虑到了排序的可扩展性,这里的判断条件设置为接口。packagecom.aii.algorithm; publicclassArrayAdjuster{ publicvoidadjust(int[]array,CallB
q291611265
·
2015-08-22 19:00
patition
剑指offer面试题
12-打印1到最大的n位数
题目:输入一个数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3最大的三位数即999这道题的主要陷阱就在大数的处理,只要将这个考虑进去,用字符串来表示,就好说了。那差不多代码是这样子的:publicvoidprint1(intn){if(n=0;i--){number[i]=(char)(number[i]+1);if(number[i]>'9'){number[i]=(c
翁英健啊
·
2015-08-22 15:41
数据结构
算法题解-java
剑指offer面试题
12-打印1到最大的n位数
题目:输入一个数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3最大的三位数即999这道题的主要陷阱就在大数的处理,只要将这个考虑进去,用字符串来表示,就好说了。那差不多代码是这样子的:publicvoidprint1(intn){ if(n=0;i--){ number[i]=(char)(number[i]+1); if(number[i]>'9'){ number[i
q291611265
·
2015-08-22 15:00
剑指offer面试题
13-在O(1)时间删除链表的节点
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。要想在O(1)时间搞定,绝对不能用遍历。这里采用将后面的一个节点复制到当前节点的方法。不过有特殊情况要考虑:1.如果要删除的节点没有下一个节点:则要找到上一个节点,并且将next设置为空,这个时候只能用遍历2.如果当前链表就一个节点由于java中没有指向指针的指针,所以用返回null。publicclassNode{
q291611265
·
2015-08-22 14:00
java
链表
剑指Offer面试题
:7.旋转数组的最小数字
一、题目:旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。这道题最直观的解法并不难,从头到尾遍历数组一次,我们就能找出最小的元素。这种思路的时间复杂度显然是O(n)。但是这个思路没有利用输入的旋转数组的特性,肯定达
Edison Chou
·
2015-08-21 00:00
剑指Offer面试题
:6.用两个栈实现队列
一、题目:用两个栈实现队列题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。原文是使用C++结合模板实现的定义,这里我们采用C#结合泛型来实现这个队列的定义,我们要实现的就是两个方法:AppendTail与DeleteHeadpublicclassCQueue { privateSta
Edison Chou
·
2015-08-20 00:00
剑指Offer面试题
:5.重建二叉树
一、题目:重建二叉树题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示的二叉树并输出它的头结点。二、解题思路在二叉树的前序遍历序列中,第一个数字总是树的根结点的值。但在中序遍历序列中,根结点的值在序列的中间,左
Edison Chou
·
2015-08-19 23:00
剑指offer面试题
5-从尾到头打印链表/6-重建二叉树
题目5:对于一个单链表,已知他的头结点,要求从尾到头打印里面的内容。思路:手上有头,要从尾到头打印,首先想到的是栈。想到了栈,真要去实现,发现有一个更巧的方法,同样是栈--递归。publicstaticvoidprintLinkedListFromTail(Nodenode){ if(node!=null){ printLinkedListFromTail(node.next); System.o
q291611265
·
2015-08-19 00:00
递归
面试题
单链表
剑指Offer面试题
:4.从尾到头打印链表
一、题目:从尾到头打印链表题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。到解决这个问题肯定要遍历链表。遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头。也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出。这就是典型的“后进先出”,我们可以用栈实现这种顺序。二、解题思路每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的
Edison Chou
·
2015-08-18 23:00
剑指Offer面试题
:3.替换空格
一、题目:替换空格题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“Wearehappy.”,则输出“We%20are%20happy.”。在网络编程中,如果URL参数中含有特殊字符,如空格、'#'等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在'%'后面跟上ASCII码的两位十六进制的表示。比如空格的ASCII码是32
Edison Chou
·
2015-08-18 00:00
剑指Offer面试题
:2.二维数组中的查找
一、题目:二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。二、解题思路首先选取数组中右上角的数字。如果该数字等于要查
Edison Chou
·
2015-08-17 23:00
剑指Offer面试题
:1.实现Singleton模式
说来惭愧,自己在毕业之前就该好好看看《剑指Offer》这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及。但是后悔是没用的,现在趁还有余力,把这本书好好看一遍,并通过C#通通实现一遍,并记录在我的博客中,作为学习笔记。一、题目:实现Singleton模式题目:设计一个类,我们只能生成该类的一个实例。只能生成一个实例的类是实现了Singleton(单例)模式的类型。由于设计模式在面向对象
Edison Chou
·
2015-08-17 01:00
剑指Offer面试题
51(Java版):数组中重复的数字
题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复的次数。请找出数组中任意一个重复的数字。例如如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3.解决这个问题的一个简单的方法是先把输入的数组排序。从排序的数组中找出重复的数字是件容易的事情,只需要从头到尾扫描排序后的数组就可以了。
完美风暴4
·
2015-08-12 08:41
剑指offer(Java版)
剑指Offer面试题
51(Java版):数组中重复的数字
题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复的次数。请找出数组中任意一个重复的数字。例如如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3.解决这个问题的一个简单的方法是先把输入的数组排序。从排序的数组中找出重复的数字是件容易的事情,只需要从头到尾扫描排序后的数组就可以了。
jsqfengbao
·
2015-08-12 08:00
剑指Offer面试题
47(Java版):不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得适用+,-,*,./ 四则运算符号面试的时候被问道这个问题,首先我们分析人们是如何进行十进制的加法的,比如是如何得出5+17=22的结果的,实际上,我们可以分三步进行:第一步只做各位相加不进位,此时相加的结果是12,第二步做进位,5+7中有进位,进位的值为10;第三步,把前面的两个结果加起来12+10的结果是22,刚好5+17=22我们一直在想,
jsqfengbao
·
2015-08-11 20:00
剑指Offer面试题
45(Java版):圆圈中最后剩下的数字
题目:0,1,,,,,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈中删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0,1,2,3,4这5个数字组成的一个圆圈,从数字0开始每次删除第3个数字,则删除的前四个数字依次是2,0,4,1因此最后剩下的数字是3.本题就是著名的约瑟夫环的问题。我们介绍两种方法:一种方法是用环形链表模拟圆圈的经典解法,第二种方法是分析每次被删除的数字的规律
jsqfengbao
·
2015-08-11 20:00
剑指Offer面试题
43(Java版):n个骰子的点数
题目:把n个骰子仍在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。解法一:基于递归求骰子的点数,时间效率不够高现在我们考虑如何统计每一个点数出现的次数。要向求出n个骰子的点数和,可以先把n个骰子分为两堆:第一堆只有一个,另一个有n-1个。单独的那一个有可能出现从1到6的点数。我们需要计算从1到6的每一种点数和剩下的n-1个骰子来计算点数和。接下来把剩下的n-1个骰
jsqfengbao
·
2015-08-11 08:00
剑指Offer面试题
42(Java版):反转单词顺序VS左旋转字符串
题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串为“IamaStudent.",则输出为”Student.aami".这个题目是流传甚广,很多公司都多次拿来作为面试题,很多应聘者也多次在各种博客或者书籍上见到过通过两次翻转字符串的解法,于是很快可以跟面试官说出自己的思路:第一步反转句子中所有的字符。比如翻转“IamaSt
jsqfengbao
·
2015-08-10 20:00
剑指Offer面试题
40(Java版):数组出现一次的数字
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。 *请些程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)例如输入数组{2,4,3,6,3,2,5,5},因为只有4,6这两个数字只出现一次,其他数字都出现了两次,所以输出4,6这是一个比较难的题目,很少有人在面试的时候不需要提示一下子想到最好的解决办法。一般当应聘者想了几分钟那个后还没有思路,面试官会给出一
jsqfengbao
·
2015-08-10 19:00
剑指Offer面试题
39(Java版):二叉树的深度
题目:输入一棵二叉树的根节点,求该数的深度。从根节点到叶结点依次进过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度。例如,如下图的二叉树的深度为4,因为它从根节点到叶结点的最长的路径包含4个结点(从根结点1开始,经过2和结点5,最终到达叶结点7)我们可以从另一种角度来理解树的深度。如果一棵树只有一个结点,它的深度为1,如果根节点只有左子树而没有右子树,那么树的深度应该是其左子树的
jsqfengbao
·
2015-08-10 08:00
剑指Offer面试题
38(Java版):数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数。例如输入排序数组为{1,2,3,3,,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4既然输入的数组是排序的,那么我们很自然的想到利用二分查找算法。在题目给出的例子中,我们可以先用二分查找算法找到第一个3.由于3可能出现多次,因此我们找到的3的左右两遍可能都是3,于是我们在找到3的左右两边顺序扫描,分别找出第一个3和最后一个3.因为要查找
jsqfengbao
·
2015-08-09 22:00
剑指Offer面试题
37(Java版):两个链表的第一个公共结点
题目:输入两个链表,找出它们的第一个公共结点。面试的时候碰到这道题,很多应聘者的第一反应就是蛮力法:在第一链表上顺序遍历每个结点,没遍历到一个结点的时候,在第二个链表上顺序遍历每个结点。如果在第二个链表上有一个结点和第一个链表上的结点一样,说明两个链表在这个结点上重合,于是就找到了他们的公共结点。如果第一个链表的长度为m,第二个链表的长度为n,显然该方法的时间复杂度为O(mn).通常蛮力法不会是最
jsqfengbao
·
2015-08-09 21:00
剑指Offer面试题
36(Java版):数组中的逆序对
题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数例如在数组{7,5,6,4}中,一共存在5对逆序对,分别是{7,6},{7,5},{7,4},{6,4},{5,4}。看到这个题目,我们的第一反应就是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成一个逆
jsqfengbao
·
2015-08-09 20:00
剑指Offer面试题
35(java版):第一个只出现一次的字符
题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'.看到这样的题目,我们最直观的想法就是从头开始扫描这个字符串中的字符。当访问某个字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符想比较,因此这种思路的时间复杂度为O(n2),面试官不会满意这种思路,它会提示
jsqfengbao
·
2015-08-09 16:00
剑指Offer面试题
34(java版):丑数
题目:丑数 *我们把只包含因子2,3,5的数称为丑数(UglyNumber). *求按从小到大的顺序的第1500个丑数。 *例如6,8都是丑数,但14不是,因为它含有因子7.习惯上我们把1当作第一个丑数方法一:逐个判断每个整数是不是丑数的解法,直观但不够高效:所谓一个数m是另一个数n的因子,是指n能被m整除,也就是说n%m==0.根据丑数的定义,丑数只能被2,3,5整除。也就是说如果一个数能被2整
jsqfengbao
·
2015-08-09 15:00
剑指Offer面试题
33(java版):把数组排成最小的数
题目:输入一个正整数数组,把数组里面所有的数字拼接排成一个数,打印能拼接出的所有数字中的一个。例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.这个题目最直接的做法应该是先求出这个数组中的所有数字的全排列,然后把每个排列拼接起来,最后求出排列起来的数字的最小值。求数组的排列和面试题28非常相似。根据排列组合的只是,n个数字总共有n!排列,我们再来看一下更快的算法。这
完美风暴4
·
2015-08-09 11:10
剑指offer(Java版)
【
剑指Offer面试题
】 九度OJ1504:把数组排成最小的数
题目链接地址:http://ac.jobdu.com/problem.php?pid=1504题目1504:把数组排成最小的数时间限制:1秒内存限制:128兆特殊判题:否提交:1696解决:533题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。输入:输入可能包含
zhoubin1992
·
2015-08-09 00:00
面试题
【
剑指Offer面试题
】 九度OJ1373:整数中1出现的次数(从1到n整数中1出现的次数)
题目链接地址:http://ac.jobdu.com/problem.php?pid=1373题目1373:整数中1出现的次数(从1到n整数中1出现的次数)时间限制:1秒内存限制:32兆特殊判题:否提交:1988解决:501题目描述:亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他。问题是:求出1~13的整数中1出现的次数
zhoubin1992
·
2015-08-08 20:00
面试题
剑指offer
整数中1出现的次数
【
剑指Offer面试题
】 九度OJ1372:最大子向量和(连续子数组的最大和)
题目链接地址:http://ac.jobdu.com/problem.php?pid=1372题目1372:最大子向量和(连续子数组的最大和)时间限制:1秒内存限制:32兆特殊判题:否提交:2519解决:665题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天JOBDU测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好
zhoubin1992
·
2015-08-08 10:00
面试题
剑指offer
连续子数组的最大和
【
剑指Offer面试题
】 九度OJ1371:最小的K个数
题目链接地址:http://ac.jobdu.com/problem.php?pid=1371题目1371:最小的K个数时间限制:1秒内存限制:32兆特殊判题:否提交:5938解决:1265题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。输入:每个测试案例包括2行:第一行为2个整数n,k(1 #include #i
zhoubin1992
·
2015-08-07 16:00
面试题
最小的k个数
剑指offer
【
剑指Offer面试题
】 九度OJ1370:数组中出现次数超过一半的数字
题目链接地址:http://ac.jobdu.com/problem.php?pid=1370题目1370:数组中出现次数超过一半的数字时间限制:1秒内存限制:32兆特殊判题:否提交:3397解决:994题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出
zhoubin1992
·
2015-08-07 00:00
面试题
剑指offer
数组中出现次数超
剑指Offer面试题
24(Java版):二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。例如输入数组{5,7,6,9,11,10,8}则返回true,因为这个整数序列是下图二叉树的后序遍历的结果。如果输入的数组是{7,4,6,5},由于没有哪颗二叉搜索树的后续遍历的结果是这个序列,因此返回false。在后序遍历得到的序列中,最后一个数
jsqfengbao
·
2015-08-04 20:00
剑指Offer面试题
25(Java版):二叉树中和为某一值的路径
题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的所有的结点形成一条路径。如下图,输入二叉树和整数22,则打印出两条路径,第一条路径包含结点10,12,第二条路径包含的结点为10,5,7.一般的数据结构和算法的教材都没有介绍树的路径,因此对大多数应聘者而言,这是一个新概念,也就很难一下子想出完整的解题思路。这个时候我们可以试着从一
jsqfengbao
·
2015-08-04 20:00
剑指Offer面试题
23(Java版):从上往下打印二叉树
题目:从上往下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入下图的二叉树,则一次打印出8,6,10,5,7,9,11.这道题实质上考察的就是树的遍历算法,只是这种遍历不是我们熟悉的前序、中序或者后序遍历。由于我们不太熟悉这种按层遍历的方法,可能已下载也想不清楚遍历的过程。因为按层打印的顺序决定应该先打印的根节点,所以我们从树的根节点开始分析。为了接下来能够打印8的结点的两个子节
jsqfengbao
·
2015-08-03 20:00
剑指Offer面试题
22(Java版):栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列中的数字依次压入该辅助栈,并按照第二个序列的顺序依次从该栈中弹出数
jsqfengbao
·
2015-08-03 20:00
剑指Offer面试题
21(Java版):包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1).看到这个问题,我们的第一反应可能是每次压入一个新元素进栈时,将栈里的所有元素排序,让最小的元素位于栈顶,这样就能在O(1)时间得到最小元素了。但这种思路不能保证最后压入的元素能够最先出栈,因此这个数据结构已经不是栈了。我们接着想到在栈里添加一个成员变量存放最
jsqfengbao
·
2015-08-03 19:00
【
剑指Offer面试题
】 九度OJ1369:字符串的排列
题目链接地址:http://ac.jobdu.com/problem.php?pid=1503题目1369:字符串的排列时间限制:1秒内存限制:32兆特殊判题:否提交:2839解决:708题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:每个测试案例包括1行。
zhoubin1992
·
2015-08-02 20:00
面试题
剑指offer
字符串的排列
上一页
10
11
12
13
14
15
16
17
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他