面试算法题
fh09102103
这个作者很懒,什么都没留下…
展开
-
二分查找法
package algorithm;/* * 二分法的关键思想是 假设该数组的长度是N那么二分后是N/2,再二分后是N/4……直到二分到1结束(当然这是属于最坏的情况了,即每次找到的那个中点数都不是我们要找的),那么二分的次数就是基本语句执行的次数,于是我们可以设次数为x,N*(1/2)^x=1;则x=logn,底数是2 */public class Dichotomy { pub原创 2015-04-13 10:42:25 · 340 阅读 · 0 评论 -
Huffman 编码算法之 Java 实现
Huffman编码介绍 Huffman编码 处理的是字符以及字符对应的二进制的编码配对问题,分为编码和解码,目的是压缩字符对应的二进制数据长度。我们知道字符存贮和传输的时候都是二进制的(计算机只认识0/1),那么就有字符与二进制之间的mapping关系。字符属于字符集(Charset), 字符需要通过编码(encode)为二进制进行存贮和传输,显示的时候需要解码(decode)回 字符,字符集转载 2015-10-01 15:39:26 · 622 阅读 · 0 评论 -
最长重复子字符串:123321||12321
package StringAndArray;/** * 最长重复子字符串:123321||12321 * * Time O(n^2), Space O(1) * * @author fh * */public class Longest_Palinadromic_Substring { public static void main(String[] args) {转载 2015-09-30 09:48:42 · 671 阅读 · 0 评论 -
A*算法--迷宫找最短路径(JAVA实现)
转载自:http://www.java3z.com/cwbwebhome/article/article1/1376.html?id=4920序:搜索区域 假设有人想从A点移动到一墙之隔的B点,如下图,绿色的是起点A,红色是终点B,蓝色方块是中间的墙。你首先注意到,搜索区域被我们划分成了方形网格。像这样,简化搜索区域,是寻路的第一步。这一方法把搜索区域简化成了一个二维数组。数组的每一个元素是网转载 2015-09-29 14:07:22 · 13338 阅读 · 2 评论 -
删除单链表指针
面试题目: 给出单链表头指针以及要删除节点的地址,要求写代码删除这上个结点(每个结点数据有限,并且时间复杂度为O(1),如何实现。难点:不知道待删除节点的前一个指针,删除后断层 a->next=b;b->next=c;删除b节点如何得到a节点,使得a->next=b->next解决: 将b->next节点覆盖b节点删除b->next节点转载 2015-09-30 09:56:02 · 546 阅读 · 0 评论 -
栈计算表达式
package StringAndArray;import java.util.Stack;/** * Evaluate the value of an arithmetic expression in Reverse Polish Notation. * Valid operators are +, -, *, /. Each operand may be an integer or anot转载 2015-09-30 09:49:27 · 426 阅读 · 0 评论 -
链表反转
package StringAndArray;/** * Problem: Rotate an array of n elements to the right by k steps. For example, * with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to * [5,6,7,1,2,3,4]. How many原创 2015-09-30 09:42:21 · 387 阅读 · 0 评论 -
求解200-500间的质数
package arithmetic;import java.util.ArrayList;import java.util.List;/** * 求解200-500间的质数 * * @author fh * @way:与2---sqrt(本身)相除,能整除的不是质数 */public class 质数 { public static void main(String[] a原创 2015-09-30 09:39:12 · 1443 阅读 · 0 评论 -
链表深拷贝
面试题目: 有一个特殊的链表,其中每个节点不但有指向下一个结点的指针PNEXT,还有一个指向链表中的任意结点的指针PRAND,如何拷贝这个链表。package List;import java.util.ArrayList;import java.util.List;/** * 链表深度copy * * 题目:有一特殊的链表,其中每个节点不但有指向下一个节点的指针PNEXT,还有一个指向转载 2015-09-30 09:37:05 · 1160 阅读 · 0 评论 -
迷宫算法,找出一条路径(不一定最短)
package graph;import java.util.Stack;/** * 迷宫算法 * * sovle:找出一条出路 * * 原因:无法回溯 * * 问题:如何才能找出所有的出路 * * @author fh * */public class Maze { private static int Max_row, MAX_col;// 行数与列数原创 2015-09-30 09:40:14 · 970 阅读 · 0 评论 -
单链表找环
面试题目: 判断单链表是否有环?如何找到环的“起始”点?如何知道环的长度?解决:用一快一慢指针,从头结点一起出发,若相遇则有环快:a=head->next->next; 慢:b=head->next;变体:俩个链表判断是否有相交节点,即将俩链表相连,再用一快一慢指针转载 2015-09-30 09:59:38 · 356 阅读 · 0 评论 -
字符串、字典匹配算法
package StringAndArray;import java.util.HashSet;import java.util.Set;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 一字符串s与一个包含多个字符串的set字典dict,查询set字典中部分字符串是否能拼接成s * * @autho转载 2015-09-30 09:43:51 · 2920 阅读 · 0 评论 -
二叉树的前序遍历、中序遍历和后序遍历及其算法
二叉树的基本的遍历规则有三种:前序遍历,中序遍历和后序遍历。对于每一种遍历,树中每个结点都要经过3次。前序遍历在第一次遇到结点时立即访问,中序遍历第二次遇到结点时访问,后序遍历则到第三次遇到结点时才访问。以一棵二叉树说明其三种遍历顺序:遍历:中序:左子树->根节点->右子树先序:根节点->左子树->右子树后序:左子树->右子树->根节点前序遍历:- + a * b –原创 2015-04-14 11:01:13 · 555 阅读 · 0 评论 -
LeetCode172——Factorial Trailing Zeroes
LeetCode172——Factorial Trailing ZeroesGiven an integer n, return the number of trailing zeroes in n!.Note: Your solution should be in logarithmic time complexity.难度系数:容易题目大意:给定一个整数n,返回n!的末尾0的个数,要求对数原创 2015-04-13 14:20:58 · 410 阅读 · 0 评论 -
字符串中的字符是否唯一(
package StringAndArray;/** * 实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构) * * * 首先,你可以问面试官,构成字符串的字符集有多大?是ASCII字符,还是只是26个字母? 还是有更大的字符集,对于不同的情况,我们可能会有不同的解决方案。 * 如果我们假设字符集是ASCII字符,那么我们可转载 2015-10-02 16:05:02 · 416 阅读 · 0 评论