算法
文章平均质量分 53
lfdanding
这个作者很懒,什么都没留下…
展开
-
二叉查找树
转载地址 http://noalgo.info/603.html二叉查找树(binary search tree,又叫二叉搜索树或者二叉排序树)是一种非常重要的数据结构,许多高级树结构都是二叉查找树的变种,例如AVL树、红黑树等,理解二叉查找树对于后续树结构的学习有很好的作用。同时利用二叉查找树可以进行排序,称为二叉排序,也是很重要的一种思想。本文主要参考算法导论,详细介绍二叉查找树转载 2015-06-07 16:41:33 · 455 阅读 · 0 评论 -
散列表概述
字典是形如(k,v)元素的集合,其中k是一个关键字,v是与k有关的值。字典中没有两个元素具有相同的关键字。 在字典上可以执行下面的操作 1)从字典中获取具有指定关键字的元素。 2)在字典中插入或放入具有指定关键字的元素 3)删除或移除具有指定关键字的元素public interface Dictionary{ public Object get(Object key); pub原创 2016-06-05 16:57:01 · 916 阅读 · 0 评论 -
java.util.BitSet使用与分析
BitSet使用: 问题:对40亿个数据进行排序,数据类型为 int,无相同数据。 思考:关于40亿个数据的排序,首先想如何存储呢?一个int 4个字节,也就是160亿个字节,也就是大概有16GB的数据,现在所有的计算机估计没有这么大的内存吧,所以我们就可以文件归并排序,也可以分段读入数据在进行Qsort,但是都需要不停地读入文件,可以想象不停地读取文件硬件操作会有多么浪费时间。我们这样都是用4原创 2016-06-04 22:01:12 · 1634 阅读 · 1 评论 -
CodeForces 3D Least Cost Bracket Sequence (贪心+优先队列)
D. Least Cost Bracket Sequence time limit per test 1 second memory limit per test 64 megabytes input standard input output standard output This is yet another problem on regular bracket sequen原创 2016-05-29 11:57:53 · 711 阅读 · 0 评论 -
蓄水池算法
参考文章:http://www.cnblogs.com/ywl925/p/3793003.html 问题定义给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。求解蓄水池抽样算法:该算法是针对从一个序列中随机抽取不重复的k个数,保证每个数被抽取到的概率为k/n转载 2016-03-09 11:29:33 · 6666 阅读 · 0 评论 -
一致性哈希算法(consistent hashing)
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1、平衡性(Balance)转载 2016-03-08 21:51:53 · 487 阅读 · 0 评论 -
整数的拆分3
递推关系的确定 设n的“最大零数不超过m” 的分划式个数为q(n, m),这里m q(n,n)=1+q(n, n-1) 等式右边的“1”表示n等于n本身;q(n,n-1)表示n的所有其他分划,即最大零数不超过n-1的分划。 q(n,m)=q(n,m-1)+q(n-m,m) (1转载 2015-03-17 17:08:44 · 610 阅读 · 0 评论 -
3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: Elements in a triplet (a,b,c) must be i原创 2016-03-07 13:55:52 · 398 阅读 · 0 评论 -
shell排序
参考这篇文章http://blog.csdn.net/gulianchao/article/details/8581210 Shell排序是DL. Shell于1959年针对直接插入排序算法改进提出的,属于插入排序的范畴,是对直接插入排序算法的改进。直接插入排序在基本有序时效率较高,并且在序列规模不是很大时效率也很高,Shell排序就是针对这两点进行改进。核心思想是:待排序列有n个元素,先取一个原创 2016-03-05 16:42:27 · 1184 阅读 · 0 评论 -
堆排序算法
堆排序(Heap Sort)算法是基于选择排序思想的算法,其利用堆结构和二叉树的一些性质来完成数据排序。堆排序在某些场合具有广泛的应用。堆排序算法1、什么是堆结构 堆排序的关键是首先构造堆结构。那么什么是堆结构呢?堆结构是一种结构,准确地说是一个完全二叉树。在这个树中每个节点对应于原始数据的一个记录,并且每个结点应满足以下条件:1)如果按照从小到大的顺序排序,要求非叶结点的数据要大于或等于其左、右原创 2016-03-04 21:57:04 · 1566 阅读 · 0 评论 -
Single Number
参考的文章http://www.cnblogs.com/changchengxiao/p/3413294.html和http://blog.csdn.net/jiadebin890724/article/details/23306837 对于Single Number1 o(n)的算法只能是线性扫描一遍,可能的相法是位运算。对于异或来说: 1. 异或运算是可交换,即 a ^ b = b ^ a原创 2015-11-18 11:16:18 · 360 阅读 · 0 评论 -
leetcode[53]Maximum Subarray
最大连续子序列和,非常经典的dp问题。状态转移方程如下所示: f[i] = max(f[i-1]+a[i],f[i-1]); max({f[i]}) 分析可以参考一下链接 http://www.tuicool.com/articles/UzmU7jb http://blog.csdn.net/lanxu_yy/article/details/17527745 http://www.a原创 2015-11-08 19:24:21 · 384 阅读 · 0 评论 -
[LeetCode39]Combination Sum 和[LeetCode40]Combination Sum II
一开始想到用背包DP做,用DP的好处是速度快。但打印结果比较麻烦。DP比较适合打印总共有几种情况。所以就用DFS来做。 参考这两篇文章 http://blog.csdn.net/sbitswc/article/details/31659809和http://www.cnblogs.com/remlostime/archive/2012/10/29/2745083.html 对于Combinat原创 2015-11-06 18:52:40 · 464 阅读 · 0 评论 -
LeetCode – 4Sum
对于k-sum的时间复杂度,最坏是O(n^k),最好的是O(n^(k-1)),对于时间复杂度的分析可以参考这篇文章http://blog.csdn.net/doc_sgl/article/details/12462151 这篇博客的时间复杂度是O(n^(k-1)),写的特别好和精炼 http://www.programcreek.com/2013/02/leetcode-4sum-java/原创 2015-11-07 10:56:29 · 402 阅读 · 0 评论 -
c语言语法(三)
今天刷c语言题的时候,在函数传递指针的问题上进行了一下思考,主要参考这篇文章http://www.cnblogs.com/nearu/archive/2009/06/08/1498918.htmlvoid GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){原创 2015-08-14 10:35:17 · 527 阅读 · 0 评论 -
241 Different Ways to Add Parentheses(C代码版)
这道题有点像矩阵连乘问题 主要参考http://blog.csdn.net/pointbreak1/article/details/47315357的java版的代码public class Solution { public List<Integer> diffWaysToCompute(String input) { List<Integer> result原创 2015-08-11 19:38:39 · 707 阅读 · 1 评论 -
AVL树(平衡二叉树(Balanced Binary Tree))
转载地址是 http://noalgo.info/661.htmlAVL树是一种自平衡的二叉查找树(Balanced Binary Tree),由于其任意节点的左右子树的高度差至多为一,查找、插入、删除等操作的复杂度在平均和最坏情况下都是O(log n)。AVL树和红黑树都是平衡的二叉查找树,但二者有一些细微的区别,本文将详细讲解AVL树的原理与实现,并且部分实现过程参照了红黑树,具体可转载 2015-06-08 12:57:04 · 1202 阅读 · 0 评论 -
0-1背包问题动态规划
基本的0-1背包问题。这里的物品一般指花瓶、玉器什么的,要么拿,要么不拿,只有0和1两种状态,所以也叫0-1背包。初学者有时会认为,0-1背包可以这样求解:计算每个物品的,然后依据的值,对所有的物品从大到小进行排序。其实这种贪心方法是错误的。如下表,有三件物品,背包的最大负重量是50,求可以取得的最大价值。 其实,0-1背包是DP的一个经典实例,可以用动态规划求解。0-1背包问题: 有N件物品和原创 2016-03-08 15:57:27 · 691 阅读 · 0 评论