- 浏览: 34924 次
- 性别:
- 来自: 北京
-
最新评论
-
cjf068:
LuckYes 写道楼主如果用最小堆的话,最好用调整堆的方式来 ...
求最小的k个数问题 -
LuckYes:
楼主如果用最小堆的话,最好用调整堆的方式来构建堆,这样效率更高 ...
求最小的k个数问题 -
cjf068:
这个算法的基本思路, ...
大数乘法 -
liujunsong:
这个算法的基本思路,是小学3年级的 算法,就是简单的把乘法运算 ...
大数乘法 -
shuidexiongdi:
去年我也写了一个http://shuidexiongdi.it ...
大数乘法
文章列表
红黑树 规则
* 1.每个节点不是红色就是黑色
* 2.根总是黑色
* 3.如果节点是红色,则它的两个子节点必须是黑色(反之则不一定)
* 4.从根到叶节点或空子节点的每条路径,必须包括相同数目的黑节点(空节点为黑色)
节点类:
pa ...
有些情况下,对于一个结构化的以行为记录的文本文件,需要按列分组统计,如果数据量小,可以直接导入数据库中,但是当文件很大时,导入数据库不太现实,本程序即实现非数据库条件下,按任意列分组统计行数功能;文件只读一次,按任意分组方式查询。
基本思路:
1.根据指定的列名,构建一颗多叉树,树的高度即为可以分组的条件列数
2.存储树中,各节点名按字典顺序降序排列
3.查询时,根据指定的列名,找到对应的树节点,将其中value值累加返回
以下为第一个初级版本,欢迎指点!!
树节点:
package org.jf.sta;
import java.util.ArrayList;
import ja ...
查找最小的k个元素
题目:输入n个整数,输出其中最小的k个。
例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。
我的思路:利用二叉堆,构建一个容量为k的定长最小二叉堆,遍历数组,逐个将元素add进堆,完毕返回堆中所有元素即为最小的k个元素
package org.jf.alg;
/**
* 定长小根堆
* 数组存储,数组第一个元素留空
*
* 第k个元素的左儿子为 a[2k],右儿子为a[2k+1]
*
* 第k个元素的父节点为a[k/2]
*
* k从1记起
*
* @author chenjf ...
设计包含max函数的栈
- 博客分类:
- 面试题
package org.jf.alg;
/**
* * 算法描述:
一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。
设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。
可以修改栈的存储方式,push,pop的操作,但是要保证O(1)的时间复杂度,空间时间复杂度无要求。
链表存储, 当然数组存储也可以
* @author junfeng.chen
*
*/
public class Pstack<T extends Comparable> {
private Node head; ...
package org.jf.alg;
/**
* 蛇形数组
*
* n=3
* 1 2 3
* 8 9 4
* 7 6 5
* 最基本的直观爬行方式实现
* @author junfeng.chen
*
*/
public class SnakeArray
{
private int array[][] = null;
private int k = 0;
public SnakeArray(int n)
{
array = new int[n][n];
k = n*n;
init();
}
...
链表保存键值,由于没有权值策略,简单的将当前访问过的节点放到链表头部,则存在如下问题:
在周期性访问中,某个周期中存在一部分数据仅仅只访问了一次,则最终导致缓存中的数据都是无效的数据,而将频繁访问的数据排除了。在实际应用中,这种简单策略不适用。
TestCode
public class LRUCacheTest {
/**
* @param args
*/
public static void main(String[] args) {
LRUCache cache = new LRUCache(10);
for(int i=0;i< ...
大根堆,可用于优先级队列
package org.jf.alg;
/**
* 大根堆
*
* @author junfeng.chen
*
* @param <T>
*/
public class BigHeadBinaryHeap <T extends Comparable>
{
private int step = 64;
private Object [] array;
private int last_indx = 0;
public BigHeadBinaryHeap(int initial_size ...
固定容量的二叉堆实现,可用于快速求top k 问题。如要求一个数组中top k的元素,则建立一个容量为k的大根堆,一次遍历数组add进该堆,遍历完毕,堆中的元素即为top k的所有元素。
固定容量大根堆代码
package org.jf.alg;
public class BigHeadFixedBinHeap <T extends Comparable>
{
private Object array[];
private int current_size = 0;
public BigHeadFixedBinHeap(int size)
{
...
论坛看到的一个面试题,实现任意大整数字符串相乘,返回结果字符串
package org.jf.alg;
/**
*
* 大数乘法
* @author junfeng.chen
*
*/
public class BigIntegerMultipl
{
/**
*
* @param s1 整型乘数字符串
* @param s2 整型乘数字符串
* @return 整型字符串结果
*
* s1=a[1]a[2] ...