算法实现
波子哥
这个作者很懒,什么都没留下…
展开
-
单例模式
最近在看《剑指offer》这本书,虽说之前也看过,但是看得比较粗糙,决定重新看过。这本书也是公认的面试宝典,对程序猿找工作大有裨益,本书算法实现大部分是C/C++,也有部分C#代码。本人学习Java的,也能读懂C/C++和C#代码,但是我希望用Java实现一下本书算法,一来可以锻炼一下自己,二来通过比较不同语言实现同一算法的不同之处,体会一下其中奥妙。好吧,下面我们就来学习一下使用Java语言实现原创 2014-12-26 21:19:22 · 482 阅读 · 0 评论 -
面试题10:二进制中1的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。解法一:可能引起死循环public int NumberOf1(int n) { int count = 0; while(n != 0) { if((n & 1) == 1) count ++; n = n原创 2015-01-02 21:44:07 · 567 阅读 · 0 评论 -
面试题4:替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“I am Tom”,则输出“I%20am%20Tom”。public class ReplaceBlank { public void replaceBlank(char string[], int length) { if(string == null || length <= 0) return;原创 2015-01-03 22:33:36 · 521 阅读 · 0 评论 -
面试题38:数字在排序数组中出现的次数
题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4。Java代码实现:public class GetNumberOfK { public int getFirstK(int [] data, int length, int k, int start, int end) { i原创 2015-01-04 13:48:42 · 455 阅读 · 0 评论 -
面试题35:第一个只出现一次的字符
题目:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出‘b’。Java代码实现:public class FirstNotRepeatingChar { public char firstNotRepeatingChar(char [] pString) { if(pString == null) return '\0'; in原创 2015-01-22 11:28:32 · 513 阅读 · 0 评论 -
面试题47:不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。public class Add { public int add(int num1, int num2) { int sum, carry; do { sum = num1 ^ num2; carry = (num1 & num2) << 1; num1 =原创 2015-01-03 21:25:26 · 508 阅读 · 0 评论 -
面试题55:字符流中一个不重复的字符
题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符“go”时,第一个只出现一次的字符是‘g’。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是‘l’。Java编程实现:public class CharStatistics { private int [] occurence = new int[256]原创 2014-12-30 16:40:46 · 585 阅读 · 0 评论 -
面试题9:斐波那契数列
题目:写一个函数,输入n,求斐波那契数列的第n项。解法一(递归):效率低下,不太理想。public long Fibonacci(int n) { if(n <= 0) return 0; if(n == 1) return 1; return Fibonacci(n - 1) + Fibonacci(n - 2); }解法二(优原创 2014-12-30 15:45:27 · 493 阅读 · 0 评论 -
算法面试题——直方图内最大矩阵
题目:给出一个直方图(如图所示),求出所给直方图中所包含的最大矩阵面积。直方图可以用一个整数数组表示,如上图为[2, 1, 5, 6, 2, 3]。每个直方块的宽度均为1。上图中包含的最大矩阵面积为10。来源:http://www.jiuzhang.com/problem/43/解题思路:如果对于每个直方块,找到从它开始往左边数第一个比它小的,和往右边数第一个比他小的,则可以确定出以该原创 2015-05-04 10:08:01 · 1625 阅读 · 0 评论