自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yuwen's Hero

专注面试题, 博客 http://blog.csdn.net/beiyeqingteng 的镜像站

  • 博客(13)
  • 收藏
  • 关注

原创 pow(double a,int b)

实现pow(double a, int b) 最简单直接的方法就是用一个循环使得result *= a 做b次,但是,这样的方法不是最优的,比如我们求2^100, 我们只需要得到2^50就可以了,因为2^100 = 2^50 * 2^50。而要求2^50,只需要得到2^25就可以了,所以,按照这样一个思路,要求pow(double a,int b),我们可以按照如下方法做:public c

2012-08-29 23:36:35 3209

原创 把二叉查找树转变成排序的双向链表

问题:给一个二叉查找树,把它转化成排序的双向链表,要求是不能使用额外的空间(常数空间是允许的)。例如:该二叉查找树的双向链表结构是 1 = 3 = 4 = 6 = 7 = 8 = 10 = 13 = 14分析:二叉查找树具有非常鲜明的递归结构,因此,在解决这道问题时,我们无可避免的会想到用递归。关键是如何递归呢?因为一个节点总是有一个左节点和右节点(如果存在),对于

2012-08-29 23:02:16 884

原创 implement a queue by using two stacks

For a queue, we need to implement enqueue and dequeue methods.The idea is if we perform enqueue operation, we simply put that input into the stack 1 by performing the push operation; when we perfo

2012-08-29 10:02:32 1039 1

原创 找出丢失的数字 (XOR)

问题:有一组数字,从1到n中减少了一个数,顺序也被打乱了,放在一个n-1的数组里,请找出丢失的数字。分析:这类题是频率很高的面试题,这类题的主要思路还是用XOR位操作,利用XOR位操作的原理是如果两个相同的数进行XOR操作,结果是0,而0与数A进行位操作,结果仍旧是A。所以,我们可以用1^2^...^n的结果逐个异或当前输入数据,而最后的结果是丢失的那个数字。时间复杂度为O(n),空间

2012-08-29 08:21:43 1526

原创 Remove Duplicates from Sorted Array

Question:Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do thi

2012-08-29 06:59:16 2026

原创 不占用任何额外空间的情况下交换两个数的值

问题:给你两个整数,比如 a = 10, b = 20,在不占用任何额外空间的条件下交换两个数的值。思路:首先,问题看起来是挺不可思议,但是也是挺有趣的。既然不能占用任何空间,只能在已有的变量上打主意。这里有两个方法,看完代码自己就能马上明白,所以就不多解释了。方法1:int a = 10;int b = 20;a = a^b;b = b^a;a = a^b;这个方

2012-08-29 06:55:54 902

原创 最大子矩阵和

前言:今天花了很长时间,看了无数人写的帖子,但是几乎没有人把这个问题一下子说得很清楚,所以,我把这个问题按照自己的思路写出来,希望能够把这个问题讲清楚。问题:求一个M*N的矩阵的最大子矩阵和。比如在如下这个矩阵中: 0 -2 -7  0 9  2 -6  2-4  1 -4  1-1  8  0 -2 拥有最大和的子矩阵为: 9 2-4 1-1 8

2012-08-27 07:48:07 692

原创 两个巨大正整数相加

问题:两个巨大整数相加,可能会造成溢出,或者它的大小已经超出基本数据类型的范围,所以,我们对巨大整数进行相加时,可以把它们转换成字符串,然后通过字符串的处理进行整数相加。这里有两种做法:第一种,把整数存在一个字符数组里进行处理。代码如下:public static String addThroughArray(String a, String b) { char[] adde

2012-08-24 12:18:54 932

原创 数组中出现次数超过一半的数字

问题:给定一个 int 数组,找出里面出现次数超过一半的数字。分析:首先,我们假定该数组中存在超过一半的数字,要把那个数字找出来,我们有以下方法:1. 排序。出现次数最大的那个数字一定是排序后第 n/2 + 1 那个值(假定是从1 开始数)。复杂度为O(nlgn).2. 遍历一遍数组,找出数组里的最大值max和最小值min,然后创建一个大小为 max - min + 1的数组,

2012-08-21 04:54:56 736

原创 二叉查询树的保存和读取

问题:把一个二叉查询树保存到一个文件,然后通过这个文件把这个二叉查询树还原出来。我们使用pre-order遍历把一个二叉查询树保存,原因是只有pre-order遍历是从root开始保存,这样,当我们读取的时候,才能够把那个值放在root。这里我用print来表示保存。public void preOrderWrite(Node root) { if (

2012-08-17 09:51:51 1578

原创 Fibonacci Number (斐波那契数列)

问题:F0 = 0F1 = 1Fn = Fn − 1 + Fn − 2求FnFibonacci数列是一个非常经典的用递归解决的问题。递归方法如下:public int F(int n) { if (n == 0) return 0; else if (n == 1) return 1; else return F(n - 1) + F(n - 2)

2012-08-12 05:32:14 1704

原创 Trie (prefix tree) 实现 (Java)

关注Trie 这种结构已经很久,Trie有一个很有趣的用途,那就是自动提示。而且,前不久在一次面试里,也需要用Trie来解答。所以,在此对这个数据结构进行总结。Trie,又称单词查找树或键树,是一种树形结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它有3个基本性

2012-08-12 05:07:19 7891

原创 LRU cache实现 (Java)

引子:我们平时总会有一个电话本记录所有朋友的电话,但是,如果有朋友经常联系,那些朋友的电话号码不用翻电话本我们也能记住,但是,如果长时间没有联系了,要再次联系那位朋友的时候,我们又不得不求助电话本,但是,通过电话本查找还是很费时间的。但是,我们大脑能够记住的东西是一定的,我们只能记住自己最熟悉的,而长时间不熟悉的自然就忘记了。其实,计算机也用到了同样的一个概念,我们用缓存来存放以前读取

2012-08-12 00:01:35 9958

空空如也

空空如也

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

TA关注的人

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