数据结构与算法
文章平均质量分 89
hiyajo_salieri
fight for light
展开
-
求解最长公共子序列问题(LCS)
刷leetcode一直没做到大名鼎鼎的LCS问题,也不明白LCS具体是什么问题,直到做到去年腾讯笔试的一道编程题: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述:原创 2017-02-27 21:46:10 · 408 阅读 · 0 评论 -
C++11完成单生产者单消费者模式
#include #include #include #include #include #include static const int kItemRepositorySize = 10; // Item buffer size. static const int kItemsToProduce = 1000; // How many items we plan to原创 2017-07-03 16:44:27 · 531 阅读 · 0 评论 -
Bloom Filter(布隆过滤器)的概念和原理
Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到转载 2017-03-03 15:36:52 · 257 阅读 · 0 评论 -
各种排序算法稳定性比较
排序算法稳定性 所谓稳定性是指待排序的序列中有两元素相等,排序之后它们的先后顺序不变.假如为A1,A2.它们的索引分别为1,2.则排序之后A1,A2的索引仍然是1和2. 稳定也可以理解为一切皆在掌握中,元素的位置处在你在控制中.而不稳定算法有时就有点碰运气,随机的成分.当两元素相等时它们的位置在排序后可能仍然相同.但也可能不同.是未可知的. 另外要注意的是:算法思想的本身是独立于编程语言的,原创 2017-03-30 10:54:02 · 516 阅读 · 0 评论 -
利用STL中的partition完成快排
学习《STL源码剖析》p354时,发现STL中已有partition函数,这不禁让人联想到c语言实现的快排:int Partition(int k[], int low, int high) { int point; point = k[low]; while( low < high ) { while( low = point ) { high--; } swa原创 2017-04-03 18:30:46 · 2033 阅读 · 0 评论 -
Leetcode 102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level). For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 2原创 2017-03-07 16:11:13 · 241 阅读 · 0 评论 -
名企笔试:好未来2017秋招笔试(连续最长的数字串)
读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述: 测试输入包含1个测试用例,一个字符串str,长度不超过255。 输出描述: 在一行内输出str中里连续最长的数字串。 输入例子: abcd12345ed125ss123456789 输出例子: 123456789原创 2017-03-05 22:10:49 · 518 阅读 · 0 评论 -
STL中各个容器的实现基本原理以及互相依赖
STL中一共拥有六大组件: 1.算法 2.迭代器 3.容器. 4.仿函数 5.适配器(配接器)6.空间配置器 通过阅读侯捷版本的《STL源码剖析》可以知道,STL的实现也是由基本的数据结构来完成的 容器大概可以分为关联型容器和序列型容器, 序列型容器有vector,list,deque,queue,stack,slist,heap,priority_queue vecto原创 2017-03-05 20:28:48 · 1041 阅读 · 0 评论 -
每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到转载 2017-03-05 16:42:46 · 194 阅读 · 0 评论 -
贪心算法基本介绍以及在lintcode上的典型题型
最初接触贪心算法是在学习数据结构与算法基础时,当时接触了最短路径的迪杰斯特拉算法,这是由一个局部贪心从而实现全局最优的一个典型算法,但是作为一个标准问题的解法它实在是太难自己写出来了,所以自己想深入地了解了一下贪心算法,以达到融会贯通的效果 一、什么是贪心算法? 顾名思义该算法重点在于贪心,也就是对于每一个原子事件,都需要做一个当前受益最大的决定同时做到全局最优 二、原创 2017-02-23 14:55:23 · 1841 阅读 · 0 评论 -
位图Bitmap
位图是一种特殊的数组,由01组成,通常来说每一个01序列对应一个特殊的值,从而方便数值的快速定位。 比如下面这两道题: 1.找出一个不在5TB个整数中存在的数。 一般来说我们可以用Hash来做,但是题目中强调了5TB这个数字就表示空间资源有所限定,如果依次遍历数字建立Hash表,太过于浪费。 此时可以用位图来做,5TB的数,其中必然有重复的数字,假设一共有4GB个不重复的数字,由位原创 2017-02-23 14:40:31 · 308 阅读 · 0 评论 -
卡特兰数组
接触卡特兰数组是在刷Leetcode上的95.96这两题 unique binary search tree时涉及的知识点,当时只会考虑o(n^2)时间复杂度的解法,后来在discuss中了解到,这是典型的卡特兰数的题型,通过卡特兰数组的通项公式可以得到O(n)的解法。 卡特兰数,一种有着特殊规律的数列,先用一道题来引出卡特兰数。 10个高矮不同的人,排成两排,每排必须是从矮到高原创 2017-02-23 11:30:19 · 468 阅读 · 0 评论 -
常见hash算法的原理
来源:mengfanrong 链接:www.cnblogs.com/mengfanrong/p/4034950.html 散列表,它是基于高速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构能够理解为一个线性表,可是当中的元素不是紧密排列的,而是可能存在空隙。 散列表(Hash table,也叫哈希表),是依据关键码值(Key value)而直接进行訪问的数据结转载 2017-02-23 11:23:04 · 190 阅读 · 0 评论 -
数据结构与算法基础学习之路——tips
一、一个高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素: – 1. 算法采用的策略,方案 – 2. 编译产生的代码质量 – 3. 问题的输入规模 – 4. 机器执行指令的速度 二、函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐近快于g原创 2017-02-23 11:12:33 · 612 阅读 · 0 评论 -
把《编程珠玑》读薄
作者:Hawstein 出处:http://hawstein.com/posts/make-thiner-programming-pearls.html 目录 开篇啊哈!算法数据决定程序结构编写正确的程序编程中的次要问题程序性能分析粗略估算算法设计技术代码调优节省空间排序取样问题搜索堆字符串 开篇 具体化你的解决的问题。下面是A和B的对话。转载 2017-06-27 10:45:05 · 573 阅读 · 0 评论