
数据结构-算法
文章平均质量分 76
荒岛码农
这个作者很懒,什么都没留下…
展开
-
十道海量数据处理面试题与十个方法大总结
http://blog.youkuaiyun.com/v_JULY_v/article/details/6279498 第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000转载 2015-09-29 09:58:47 · 568 阅读 · 0 评论 -
正则表达式划分CSV
《精通正则表达式》 第401页 public static List splitCSV(String txt) { String reg = "\\G(?:^|,)(?:\"([^\"]*+(?:\"\"[^\"]*+)*+)\"|([^\",]*+))"; // 即 \G(?:^|,)(?:"([^"]*+(?:""[^"]*+)*+)"|([^",]*原创 2014-05-28 08:47:07 · 3127 阅读 · 0 评论 -
堆(优先级队列) 的应用
1. 构建哈夫曼代码怎样提升性能? 我们知道在构建哈夫曼树时,每次要选择集合中两个最小的元素,然后将元素值相加,合并为一个新节点,此时两个最小的元素的取出可以用HeapExtractMin函数来实现,产出的新节点需要插入到堆中 我们有MinHeapInsert函数来实现。 之前我们遇到哈夫曼编码,往往关注的是其思想,然而每次取出最小的2个元素的过程,却涉及到排序、求极值的问题。转载 2014-09-09 18:32:26 · 458 阅读 · 0 评论 -
Bloom Filter概念和原理
http://blog.youkuaiyun.com/jiaomeng/article/details/1495500 目录(?)[-] Bloom Filter概念和原理 集合表示和元素查询 集合表示和元素查询 错误率估计 错误率估计 最优的哈希函数个数 最优的哈希函数个数 位数组的大小 位数组的大小 总结 总结 参考资料 参考资料转载 2015-01-12 10:39:54 · 373 阅读 · 0 评论 -
遇到的几个算法题
1、如何快速求得与某个数平方根最接近的整数 数学上平方根一般由级数展开求得。但是此处只求其近似整数,用二分查找法,复杂度为Log(N)。 2、有一个几个T的大文件,记录了若干价格记录,需要累加计算总价,如何算。现在计算机内存有限。 使用Java内存映射文件 java.nio.MappedByteBuffer ,比java.io.BufferedInputStream 快很多原创 2015-01-24 13:36:18 · 451 阅读 · 0 评论 -
无权图的Warshall算法
Warshall算法 :将无权图的连接矩阵转化为联通表。 public class Walshall { public static int[][] caculate(final int[][] linkedMatrix) { int M = linkedMatrix.length; int[][] connectTable = linkedMat原创 2015-03-06 14:01:25 · 594 阅读 · 0 评论 -
Java中正则表达式的几种用法
多数内容转载自:http://www.jb51.net/tools/regex.htm ,有改动 用到了java.util.regex包: 1. 验证 Pattern pattern = Pattern.compile("^[1][3-8]\\d{9}$"); Matcher matcher = pattern.matcher("1356576543原创 2014-05-28 08:45:33 · 548 阅读 · 0 评论 -
数据结构试题解答思路
(01)-把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 思路:中序遍历,递归。 (02)-设计包含min函数的栈 题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。 思路:在栈里添加一个成员变量转载 2014-09-19 11:25:29 · 1058 阅读 · 0 评论 -
无权图的遍历
public class UnweightedGraph { private final List vertexes = new ArrayList(); private final Map> linkTable = new TreeMap>(); public List getVertexes() { return vertexes; }原创 2015-03-06 13:17:11 · 385 阅读 · 0 评论 -
常用正则表达式例子
原文地址:常用正则表达式例子作者:北极rose1。^d+$ //匹配非负整数(正整数 + 0) 2。^[0-9]*[1-9][0-9]*$ //匹配正整数 3。^((-d+)|(0+))$ //匹配非正整数(负整数 + 0) 4。^-[0-9]*[1-9][0-9]*$ //匹配负整数 5。^-?d+$ //匹配整数 6。^d+(.d+)?$ //匹配非负浮点数(正浮点数 + 0)转载 2014-05-28 08:45:35 · 421 阅读 · 0 评论 -
快速排序
public class QuickSortUtil { public static void sort(int[] array) { sort(array, 0, array.length - 1); } private static void sort(int[] array, int start, int end) { if (en原创 2014-12-19 17:48:34 · 355 阅读 · 0 评论 -
MyDijkstraTest
public class MyDijkstraTest { /** * @param args */ public static int U = 99999999; public static void main(String[] args) { int[][] graph = { { 0, 50, U, 80, U }, { U, 0, 60, 90, U }, {原创 2015-07-06 18:16:52 · 485 阅读 · 0 评论 -
笔记:常用排序算法
公用的交换模块: protected void swap(int[] a, int i, int j) { if (i == j) { return; } int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } 冒泡排序:效率O(n^2), 稳定原创 2014-05-28 08:45:31 · 401 阅读 · 0 评论 -
有权图的Floyed
public class Floyed { public final static int UNLIMITED = Integer.MAX_VALUE; public static int[][] caculate(final int[][] linkedMatrix) { int M = linkedMatrix.length; int[][]原创 2015-03-06 15:01:49 · 408 阅读 · 0 评论 -
Dijkstra 算法
package dijkstra; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class Dijkstra { public static int U = 99999999; // 此路不通 static class原创 2015-07-06 15:39:28 · 506 阅读 · 0 评论 -
《Effective Java》中推荐的hashCode算法
http://blog.youkuaiyun.com/error_case/article/details/46503103 Google首席Java架构师Joshua Bloch在他的著作《Effective Java》中提出了一种简单通用的hashCode算法: 1. 初始化一个整形变量,为此变量赋予一个非零的常数值,比如 int result = 17; 2. 选转载 2015-10-28 17:02:37 · 1526 阅读 · 1 评论