自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 剑指Offer--面试题29:数组中出现超过一半的数字

题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。解题思路:思路有多个,比如先排序,找到中位数,则有可能是所要找的数字。或者利用快排的思想,找到下标[n/2]的数字即中位数。中位数有可能是要找的数字,但只是有可能是,因为出现次数超过一半

2015-06-28 21:20:16 753

原创 剑指offer--面试题28:字符串的排列--Java实现

题目描述:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。解题思路:我们求整个字符串的排列,可以看成两步,首先求可能出现在第一个位置上的字符,即把第一个字符和后面所有的字符交换。第二步固定一个字符,求后面所有字符的全排列。这是一个递归的思想。代码:public class Permu

2015-06-28 16:55:29 2443

原创 剑指offer--面试题28:字符串的排列--Java实现

题目描述:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。解题思路:我们求整个字符串的排列,可以看成两步,首先求可能出现在第一个位置上的字符,即把第一个字符和后面所有的字符交换。第二步固定一个字符,求后面所有字符的全排列。这是一个递归的思想。代码:public class Permu

2015-06-28 16:51:06 684

原创 剑指offer--面试题27:二叉搜索树与双向链表--Java实现

题目描述:输入一颗二叉搜索树,将二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:原先指向左子结点的指针调整为链表中指向前一个结点的指针,原先指向右子结点的指针指向为链表中指向后一个结点的指针。由于要求转换后是排好序的链表,所以应该采用中序遍历的方法。 当遍历到根节点的时候,我们把树看成三部分 值为10的根结点,根结点值为6的左子树,根结点值为14的

2015-06-27 18:23:01 1696 4

原创 剑指offer--面试题26:复杂链表的复制--Java实现

题目描述:复制一个复杂链表,在复杂链表中,每个结点除了有一个next指针指向下一个结点外,还有一个sbiling指向链表中的任意结点或者null。下图是一个复杂链表的示例,Null的指针没有画出。 解题思路:1.很直观的解法就是分成两步:1).复制原始链表上的每一个结点,并用next指针连起来。 2).复制sbiling指针。 但是复制sbiling指针时需要比较高的复杂度。 以上图为例,如

2015-06-23 20:14:27 4061

原创 剑指offer--面试题25:二叉树中和为某一值的路径--Java实现

题目描述: 输入一课二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题思路: 先模拟一下过程:树的结构如下所示,期待路径的和为22 10→5→4是一条路径,它们的和不是22。所以下一条路径10→5→7,(这是一种回溯的方法),它们的和22,然后回溯,下一条路径10→12。这里我们只有到叶子结点才有必要判断和是否等于期待

2015-06-21 17:14:23 1150

原创 剑指offer--面试题24:二叉搜索树的后序遍历序列--Java实现

题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是返回true,否则返回false。假设输入的数组的任意两个数字互不相同。解题思路: 要明确两个概念: 1. 二叉搜索树的特点,就是如果有对任何一个非空结点,假如左子树存在,那么左子树的中任意一个结点都比该根结点小,假如右子树存在,那么右子树中的任何一个节点都比该根结点大。2.二叉树的后序遍历,也就是 左→右→根

2015-06-21 16:28:15 1601

原创 剑指offer--面试题23:从上往下打印二叉树--Java实现

题目描述: 从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。解题思路: 这其实是树的广度优先遍历。利用一个队列可以实现。import java.util.LinkedList;import java.util.Queue;public class PrintFromTopToBottomTest { static class Node{ int ke

2015-06-21 13:04:00 560

原创 剑指offer--面试题22:栈的压入、弹出序列--Java实现

题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列。假如压入栈的所有数字均不相同。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该栈序列对应的一个弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列。解题思路: 这种题以前在考试或考研中很常见的选择题,进出栈模拟过程就不解释了。只说一下编程思路: 如果下一个弹出的数字刚好是栈

2015-06-19 21:12:18 702

原创 剑指offer--面试题21:包含min函数的栈--Java实现

题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。思路: 如果只用一个元素保存最小的元素,那么当最小的元素被弹出后,就没有办法得到剩余元素中最下的元素。 所以,最好的办法是将每次的最小元素(之前的最小元素和新压入的元素两者的较小者)都保存起来放到另外一个辅助栈里。这是剑指offer书中的举例一个模拟过程: 代码:import java.util.Stack;

2015-06-19 20:24:03 1421

原创 剑指offer--面试题20:顺时针打印矩阵--Java实现

题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16依次打印出数字: 1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10解题思路:我们可以把矩阵想象成若干个圈,我们可以用一个循环来打印矩阵,每

2015-06-19 19:44:00 578

原创 剑指offer--面试题19:二叉树的镜像--Java实现

题目描述: 请完成一个函数,输入一个二叉树,该函数输出它的镜像。解题思路: 我们先前序遍历这棵树的每个结点,如果这个结点有子结点,就交换它的两个子结点。当交换完所有非叶子结点的左右子结点后,就得到了树的镜像。这里采用了递归方式和非递归方式。import java.util.Stack;public class MirrorRecursivelyTest { static class N

2015-06-16 22:09:13 511

原创 剑指Offer--面试题18:数的子结构--Java实现

题目描述: 输入两颗二叉树A和B,判断B是不是A的子结构。解题思路: 要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步在树A中找到和树B的根结点的值一样的结点R,第二步再判断树A中以R为根结点的子树是不是包含和B一样的结构。通常我们都会采用递归的方式,但是这里需要注意的检查边界条件,即空指针。代码如下:public class HasSubTreeTest { stati

2015-06-16 20:26:50 892

原创 剑指Offer--面试题17:合并两个排序的链表--Java实现

题目描述: 输入两个排序的链表,合并这两个链表并使新链表的结点仍然是按递增排序的。解题思路: 思路很简单,就是比较两个头结点的大小,取较小的结点加入到新链表中去,一个简单的递归。 要注意的是鲁棒性,检查输入。代码:public class MergeListTest { static class Node { int key; Node next;

2015-06-15 21:53:22 523

原创 剑指offer--面试题16:翻转链表--Java实现

题目描述: 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。解题思路: 为了反转列表,其实就是为了改变next指针,由指向后一个变为指向前一个。 这里为了避免链表断裂,要保存三个结点,即当前结点,前一个结点和后一个结点。代码:public class ReverseListTest { static class ListNode { int ke

2015-06-15 21:36:37 1664

原创 剑指offer--面试题15:链表中倒数第K个结点--Java实现

题目描述: 输入一个链表,输出链表中倒数第K个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。解题思路:请注意这是指的单向列表,不能从尾结点向前回溯。1.倒数第k个结点,就是整数第n-k+1个结点,所以如果我们能够获得链表的长度,就能够采用这种办法,想要

2015-06-03 22:10:33 520

原创 剑指offer--面试题14:调整数组顺序使奇数位于偶数前面--Java实现

题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。解题思路: 这个题目的思路还是很简单的,就是利用交换的思想。 两个指针,一个从前往后一个从后往前,在相遇之前,如果前面的指针遇到偶数就和后面指针遇到的奇数交换,其实就是快排的内部的一个过程。这个题的重点在于可扩展性,也就是说不局限于偶数和奇数 或者大小或者把能被3整除

2015-06-03 20:57:29 745

原创 剑指offer--面试题13:在O(1)时间删除链表结点--Java实现

题目描述: 在给定的单向列表的头指针和一个结点指针,定义在一个函数在O(1)时间删除该结点。解题思路: 一般单向列表删除结点,就是从头遍历,找到这个结点之前的结点,指向这个结点之后的结点,就算是删除了这个结点。 这种方法的时间复杂度为O(n) 题目要求在O(1)时间内完成,所以应该避免遍历。 我们遍历的目的是为了找到这个结点前面的那个结点,所以我们可以采用下面的办法。 将待删除结点的下一

2015-05-18 21:57:42 2138

原创 剑指offer--面试题12:打印1到最大的n位数--Java实现

题目描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1、2、3直到最大的3位数即999。思路: 首先应该意识到这是一个大数问题 Java中有两个提供高精度计算的类,即BigInteger和BigDemical。BigInteger支持任意精度的整数,而BigDemical支持任意精度的定点数。如果利用这个类,可以容易的写出以下代码:public static vo

2015-05-13 21:36:20 619

原创 剑指offer--面试题11:数值的整数次方--Java实现

题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不要考虑大数问题。思路: 实现功能还是比较简单的,一个循环就可以完成。 这个题目考查的重点在于边界测试和负面测试。在这种数值的题目中一定要留意三种情况,即正数,负数,0。注意以下几种情况: 1.底数为0,如果指数为负数,这是不合法的。 2

2015-05-11 21:22:23 657 1

原创 剑指offer--面试题10:二进制中1的个数--Java实现

题目描述: 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数,例如把9表示成二进制是1001,有两位是1。因此如果输入9,该函数输出2。思路: 考察位运算,首先想到的是每一位分别与1做与运算,判断是否为1。 这样有两种方式: 1.一步步左移这个整数,然后&1,但这里有一个问题,就是终止循环的条件,在Java中int使用32位,这样可以做到,但是不灵活。这里补充一下位移运算的规则:左

2015-05-07 19:18:04 515

原创 剑指offer--面试题9:斐波那契数列--Java实现

题目描述: 写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列定义如下 F(0)=0 F(1)=1 F(n) = F(n-1)+ F(n-2)(n≧2)思路: 1.递归,但是数值太大容易栈溢出,大量重复计算,效率低下 2.非递归,效率高import java.math.BigInteger;public class Fibonacci { //递归算法 public

2015-05-06 21:56:07 436

原创 剑指offer--面试题8:旋转数组的最小数字--Java实现

题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。解题思路: 1.暴力解法,遍历一遍就能找到最小的值,复杂度为O(n),但是没有l利用数组的特点 2.二分查找。这里的数组算是两个有序的数组,二分查找对有序数组非常有效,复杂度

2015-05-06 21:14:42 945

原创 剑指offer--面试题7:用两个栈实现队列--Java实现

题目描述: 用两个栈实现队列。队列的声明如下,请实现它的两个函数appendTail 和 deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。解题思路: 首先,栈的规则是先进后出,队列的规则是先进先出。经过两侧先进后出之后就变成了先进先出。所以,两次进栈出栈,便成了队列。代码如下:import java.util.Stack;public class CQueue<T>

2015-05-04 20:00:38 511 1

原创 剑指offer--面试题6:重建二叉树--Java实现

题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复数字。解题思路: 主要是利用递归的思想。前序遍历的第一个元素是根结点,找出在中序遍历中根结点的位置,它之前的元素就是左子树中的元素,之后的元素就是右子树的元素。public class ConstructBinaryTree { static class BinaryTre

2015-04-29 22:03:24 674

原创 剑指offer--面试题5:从尾到头打印链表--Java实现

题目描述: 输入一个链表的头结点,从尾到头反过来打印出每个节点的值。解题思路: 遍历链表,入栈,依次出栈,打印结果。import java.util.Stack;public class PrintListReversingly { static class ListNode{ int mKey; ListNode mNext; publi

2015-04-24 21:31:13 396

原创 剑指offer--面试题4:替换空格--Java实现

题目描述: 请实现一个函数,把字符串中的每个空格替换成”%20”。例如输入“We are happy”,输出“We%20are%20happy”。解题思路: 在Java中有函数replace可以完成这个功能,我们先看一下源码中是怎么样实现的。/** * Returns a string resulting from replacing all occurrences of

2015-04-24 16:33:12 658

原创 剑指offer--面试题3:二维数组的查找--Java实现

题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从左到右的递增的顺序排序,请完成一个函数,输入这样的二维数组和一个整数,判断是否含有该整数。解题思路: 一般的查找方法,在OJ上都会超时,不管是顺序遍历还是每行二分查找等。 在这里,要结合这个二维数组的性质。行列都是有序的,所以可以选定左上角或者右下角开始比较。以左下角为例,如果待查元素较小,就向上查找,如果待查元素

2015-04-24 16:08:43 589

原创 剑指offer系列

今天开始剑指offer刷题,代码在九度OJ上AC,使用Java语言实现。

2015-04-24 09:49:49 430

原创 32-bit Linux Android emulator binaries are DEPRECATED

在32bit Ubuntu上遇到的问题,不知道在其他系统上会不会遇到

2014-11-10 10:04:26 1829 2

原创 VS2013安装插件Qt5.3 64位

安装vs就不说了在Qt

2014-10-29 11:04:38 1091

原创 Linux下jni 调用 小例子

先创建一个Java Project ,然后创建一个类HelloWorld

2014-06-06 20:40:36 587

原创 Linux下安装Python

Linux 自带Python 的,但是版本一般都比较低先到官网下载Python-3.3.4.tgz解压 tar xzf Python-3.3.4.tgz打开解压后的文件夹cd Python3.3.4、编译安装python       ./configure --prefix=/usr/local/python3.3.4       make       make ins

2014-02-23 15:04:01 547

原创 codeblocks不能调试

今天新下的codeblocks ,很久没用了,发现不能调试,没办法Run to Cursor ,控制台一闪而过,watch什么都没有,解决办法,路径不能包含中文或者空格,换个路径就好了

2014-02-19 22:10:26 2183

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除