数据结构算法
文章平均质量分 80
isunn
这个作者很懒,什么都没留下…
展开
-
malloc函数的简单实现
http://lionwq.spaces.eepw.com.cn/articles/article/item/18555原创 2014-11-09 11:06:41 · 4675 阅读 · 0 评论 -
字符串子序列数目
出处:http://blog.csdn.net/sdjzping/article/details/132983431、http://acm.fzu.edu.cn/problem.php?pid=21292、题目大意:给定一个字符串,求出该字符串有多少个不同的子序列定义dp[k]为前k个字符中子序列的个数那么dp[k]来自于两种状态,dp[k]=2*d转载 2015-04-18 10:36:54 · 3895 阅读 · 0 评论 -
动态规划-最长回文子序列
出处:http://www.acmerblog.com/longest-palindromic-subsequence-5721.html给一个字符串,找出它的最长的回文子序列的长度。例如,如果给定的序列是“BBABCBCAB”,则输出应该是7,“BABCBAB”是在它的最长回文子序列。 “BBBBB”和“BBCBB”也都是该字符串的回文子序列,但不是最长的。注意和最长回文子串的区别(参考转载 2015-04-18 10:30:22 · 1059 阅读 · 0 评论 -
第六章堆排序之“用最小堆将k个已排序链表合并为一个排序链表”(练习6.5-8)
出处:http://blog.csdn.net/MichealTX/article/details/7172910问题:请给出一个时间为O(nlgk),用来将k个已排序链表合并为一个排序链表的算法。此处的n为所有输入链表中元素的总数。(提示:用一个最小堆来做k路合并)编程思路:假设k个链表都是非降序排列的。(1)取k个元素建立最小堆,这k个元素分别是k个链表的第转载 2015-04-15 16:36:52 · 457 阅读 · 0 评论 -
Trie树:应用于统计和排序
出处:Trie树:应用于统计和排序 1. 什么是trie树 1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较转载 2016-02-18 10:46:09 · 435 阅读 · 0 评论 -
从头到尾彻底理解KMP(2014年8月22日版)
出处:July: 从头到尾彻底理解KMP(2014年8月22日版)从头到尾彻底理解KMP作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。后收录于新书《编程之法:面试和算法心得》第4.4节中。1. 引言 本KMP转载 2016-02-19 20:32:19 · 474 阅读 · 0 评论 -
Segment Tree
出处:http://blog.csdn.net/metalseed/article/details/8039326一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lgN)!性质:父亲的区间是[a,b],(c转载 2016-02-21 21:56:05 · 1526 阅读 · 0 评论 -
浅谈算法和数据结构: 九 平衡查找树之红黑树
出处:http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑转载 2016-04-02 13:50:57 · 478 阅读 · 0 评论 -
Boyer-Moore算法
出处:http://blog.csdn.net/appleprince88/article/details/11881323一.简述 在当前用于查找子字符串的算法中,BM(Boyer-Moore)算法是当前有效且应用比较广的一中算法,各种文本编辑器的“查找”功能(Ctrl+F),大多采用Boyer-Moore算法。比我们在学习的KMP算法快3~5倍。转载 2016-02-24 19:41:55 · 542 阅读 · 0 评论 -
Boyer-Moore Majority Vote Algorithm的更一般性问题
1) 问题描述基本问题:对于一个给定数组A[0:n-1],找出出现次数大于⌊n/2⌋\lfloor n/2\rfloor 的元素,称为Majority element. 一般问题:对于一个给定数组A[0:n-1],找出出现次数大于⌊n/k⌋(k≥2)\lfloor n/k\rfloor( k\ge2)的所有元素.LeetCode问题链接: Majority Element: https://le原创 2016-02-25 11:32:07 · 1978 阅读 · 0 评论 -
leetcode -- Letter Combinations of a Phone Number
Given a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone buttons) is given below.Input:Digit st原创 2014-12-11 09:57:34 · 553 阅读 · 0 评论 -
leetcode -- 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) m原创 2014-12-07 18:52:53 · 428 阅读 · 0 评论 -
leetcode -- Container With Most Water
Container With Most Water题目:Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i原创 2014-12-05 14:38:12 · 495 阅读 · 0 评论 -
最大子序列和问题
出处:最大子序列和问题问题描述: 输入一组整数,求出这组数字子序列和中最大值。也就是只要求出最大子序列的和,不必求出最大的那个序列。例如:序列:-2 11 -4 13 -5 -2,则最大子序列和为20。序列:-6 2 4 -7 5 3 2 -1 6 -9 10 -2,则最大子序列和为16。 算法一://穷举法,复杂度O(n^3) lon转载 2014-11-14 11:43:11 · 521 阅读 · 0 评论 -
一道序列算法题
题目:有a和b两个严格增序列,a和b元素相同称为交汇点。例子中 5,9,22为交汇点,在交汇点处可以切换路径。从a或b首元素出发,求元素之和最大的一条路径。//例子中1-3-5-7-8-9-18-19-22-28-40为元素和最大的一条路径//a[] = {1,3,5,9,20,22,28,40};b[] = {5,7,8,9,18,19,22,27};原创 2014-11-14 09:08:21 · 627 阅读 · 0 评论 -
一步一步写平衡二叉树(AVL树)
出处:http://www.cppblog.com/cxiaojia/archive/2014/03/02/187776.html一步一步写平衡二叉树(AVL树)作者:C小加 更新时间:2012-8-20 平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树。1962年,G.M. Adelson-Velsky转载 2014-10-31 19:46:23 · 540 阅读 · 0 评论 -
二叉树先序遍历递归和非递归实现
递归算法较为简单:// recursive travel 递归遍历 void recur_pre_travel(bnode *node) { if(node != NULL) { printf("%d ", node->data); recur_pre_travel(node->lchild); recur_pre_travel(node->rchild);原创 2014-11-04 22:47:39 · 707 阅读 · 0 评论 -
输入一个单向链表,输出该链表中倒数第k个结点
出处:http://blog.chinaunix.net/uid-20618535-id-274044.html题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};分析:为了得转载 2014-10-31 16:08:42 · 1211 阅读 · 0 评论 -
非递归中序遍历
出处:在前一篇文章二叉树遍历递归算法对二叉树遍历的递归算法做了总结,这篇文章就来对二叉树遍历的非递归算法做个汇总。还是与上一篇文章一样的顺序,一一汇总先序、中序、后序以及层序遍历的非递归算法。1、先序遍历(非递归算法)先序遍历非递归访问,使用栈即可实现。先序遍历的非递归访问在所有的遍历中算是最简单的了。主要思想就是先将根结点压入栈,然后根结点出栈并访问根转载 2014-11-03 17:10:31 · 932 阅读 · 0 评论 -
leet code -- Divide Two Integers
leet code -- Divide Two Integers原创 2014-12-17 13:16:23 · 623 阅读 · 0 评论 -
leetcode之 median of two sorted arrays
出处:http://blog.csdn.net/yutianzuijin/article/details/11499917/这是我做的第二个leetcode题目,一开始以为和第一个一样很简单,但是做的过程中才发现这个题目非常难,给人一种“刚上战场就踩上地雷挂掉了”的感觉。后来搜了一下leetcode的难度分布表(leetcode难度及面试频率)才发现,该问题是难度为5的问题,真是小看了转载 2014-12-04 10:37:02 · 353 阅读 · 0 评论 -
leetcode -- Search for a Range
Q:Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm's runtime complexity must be in the order of O(log n).If the target is not foun原创 2014-12-19 09:29:45 · 672 阅读 · 0 评论 -
每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。转载 2016-08-19 15:53:03 · 532 阅读 · 0 评论