
数据结构与算法
春泥面包
这个作者很懒,什么都没留下…
展开
-
最大公约数与最小公倍数
原文: http://blog.youkuaiyun.com/Naruto_ahu/article/details/8453502辗转相除算法的简介 在数论中,辗转相除法(国际上一般称为Euclidean Algorithm 或 Euclid's Algorithm,即欧几里得算法)是一种求任意两个欧几里得环(Euclidean Domain)中的单位(如:整数)的最大公约数的算法。这个算法转载 2012-12-31 15:38:28 · 969 阅读 · 0 评论 -
计数排序 (Counting Sort)
原文:wiki : http://en.wikipedia.org/wiki/Counting_sorthttp://zh.wikipedia.org/wiki/%E8%AE%A1%E6%95%B0%E6%8E%92%E5%BA%8F计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据转载 2013-06-18 18:39:41 · 3288 阅读 · 5 评论 -
快速排序
昨天做一个欧拉项目(projecteuler.net)的题目。需要用到快速排序。所以自己又研究了一下。下面作一个总结吧,内容源自严蔚敏的数据结构课本。1.快速排序的基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原创 2012-07-25 16:48:07 · 806 阅读 · 0 评论 -
实现memcpy
需要考虑的问题:1、参数检查2、问题相关: 区域重叠代码地址: https://github.com/huntinux/C/blob/master/memcpy.c原创 2014-05-04 18:25:40 · 873 阅读 · 0 评论 -
二叉树的非递归遍历
原文: 二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树转载 2014-06-04 11:52:35 · 717 阅读 · 0 评论 -
微软面试100题总结
原文:http://blog.youkuaiyun.com/v_july_v/article/details/6057286原创 2014-04-28 14:15:18 · 764 阅读 · 0 评论 -
二叉查找树,B树,B+树,B*树
原文: http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html转载 2014-06-13 15:20:01 · 1790 阅读 · 0 评论 -
二分查找的几点思考
二分查找的几点思考很早听说90%的程序员写不出正确的二分查找程序,对此颇为怀疑也颇为惶恐。怀疑的是,二分查找真的很难写吗?惶恐的是,怀疑的我能否在短时间内写出一个正确的二分查找程序?为了自己能成为10%中的一员,在此特别总结了二分查找算法。二分查找又称折半查找,用于在有序序列中快速寻找一个值。它始终维护一个子序列[low, high],这个子序列可能包含目标值v。初始,这个子序列是整个序列转载 2014-09-18 21:41:46 · 852 阅读 · 1 评论 -
动态规划之01背包问题(最易理解的讲解)
原文: http://blog.youkuaiyun.com/mu399/article/details/7722810转载 2014-08-25 10:57:48 · 899 阅读 · 0 评论 -
链表相关
1、单链表逆序2、双向li原创 2014-05-05 14:45:54 · 665 阅读 · 0 评论 -
【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
原文: http://blog.youkuaiyun.com/hackbuteer1/article/details/9156289转载 2014-08-14 21:57:47 · 707 阅读 · 0 评论 -
八大排序算法
原文: http://blog.youkuaiyun.com/hguisu/article/details/7776068转载 2014-08-15 16:20:54 · 947 阅读 · 0 评论 -
堆排序 (Heapsort)
原文:http://en.wikipedia.org/wiki/Heap_sortLet { 6, 5, 3, 1, 8, 7, 2, 4 } be the list that we want to sort from the smallest to the largest. (NOTE, for 'Building the Heap' step: Larger nodes d转载 2013-09-26 15:29:56 · 867 阅读 · 0 评论 -
求两个字符串的最长的连续公共子串
原文:http://blog.youkuaiyun.com/shandianling/article/details/7913818转载 2014-08-29 20:55:04 · 1484 阅读 · 0 评论 -
Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
原文: http://www.cnblogs.com/AnnieKim/archive/2013/06/15/morristraversal.htmlMorris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求:1. O(1)空间复杂度,即只能使用常数空间;2. 二叉树的形状不能被破坏(中间转载 2016-01-04 17:15:29 · 559 阅读 · 0 评论 -
设计一个LRU cache
Implement LRU CacheHow to implement LRU caching scheme? What data structures should be used?We are given total possible page numbers that can be referred. We are also given cache (or memory) siz转载 2014-09-15 12:02:17 · 1649 阅读 · 0 评论 -
用两个栈实现一个队列——我作为面试官的小结
原文: http://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html两年前从网上看到一道面试题:用两个栈(Stack)实现一个队列(Queue)。觉得不错,就经常拿来面试,几年下来,做此题的应该有几十人了。通过对面试者的表现和反应,有一些统计和感受,在此做个小结。 用C++描述,题目大致是转载 2013-11-20 16:52:02 · 1010 阅读 · 0 评论 -
一个N个整数的无序数组,给你一个数sum,求出数组中是否存在两个数,使他们的和为sum
原文: http://blog.youkuaiyun.com/swgshj/article/details/7875482问题描述:一个N个整数的无序数组,给你一个数sum,求出数组中是否存在两个数,使他们的和为sum O(nlogn)解题思路:先排序 在左右夹击判断。[cpp] view plaincopy/* 一个N个整数的无序数组,转载 2013-11-20 16:18:01 · 2984 阅读 · 0 评论 -
ACM经验-ACM大牛给的建议
原文 : http://027xbc.blog.163.com/blog/static/128159658201141371343475/一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.ACM主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。下面给个计划:第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为转载 2012-12-31 19:39:02 · 1094 阅读 · 0 评论 -
Dekker's algorithm
原文: http://hi.baidu.com/rodimus/item/dc47c11f76e59cf786ad4e9e 这是实现锁的一种算法。这种算法只解决两个线程竞争资源的情况。为了不让两个线程同时执行一段代码,比较直观的方案是设一个共享bool变量,线程进入前先检测它的值,有线程进入后改变它的值。但是在并发的情况下,可能在A检查完认为B没进入,准备改备值前转载 2013-02-07 11:04:09 · 1932 阅读 · 0 评论 -
POJ 1753 : Flip Game
原文: http://blog.youkuaiyun.com/yl198753/article/details/6125187Flip Game[cpp] view plaincopy#include "iostream" using namespace std; unsigned short int flips[16]={0xc800,0xe400,0x7转载 2013-06-07 15:59:31 · 1011 阅读 · 0 评论 -
插入排序 (Insert Sort)
Wiki : http://en.wikipedia.org/wiki/Insertion_sort看看下面的动态图片, 就明白插入排序是怎么回事了:WiKi上给出的伪代码:Pseudocode of the complete algorithm follows, where the arrays arezero-based: // The values in转载 2013-06-17 21:16:57 · 1004 阅读 · 0 评论 -
POJ 2774 : Long Long Message (后缀数组)
原文: http://blog.sina.com.cn/s/blog_6635898a0102duef.html题意:给定两个字符串 A 和 B ,求最长公共子串。思路:后缀数组。(摘自罗穗骞的国家集训队论文)字符串的任何一个子串都是这个字符串的某个后缀的前缀。求 A 和 B的最长公共子串等价于求 A 的后缀和 B 的后缀的最长公共前缀的最大值。如果枚举A和 B的所有的后缀转载 2013-06-09 14:50:35 · 972 阅读 · 0 评论 -
后缀数组学习笔记——罗穗骞倍增算法代码
原文: http://www.cnblogs.com/staginner/archive/2012/02/02/2335600.html一开始看“小罗”写的论文和模板真的云里雾里,理解起来十分困难,后来结合一个百度贴吧里面的学习笔记总算是把倍增算法的代码的意思搞懂了,于是后面自己也写了一份对“小罗”倍增算法代码的注释,希望能对各位正在学习后缀数组的同僚带来一点帮助。 另附转载 2013-06-18 21:55:26 · 1482 阅读 · 0 评论 -
POJ题目分类
原文 : http://www.cnblogs.com/kuangbin/archive/2011/07/29/2120667.html初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj转载 2012-12-31 19:34:03 · 632 阅读 · 0 评论 -
POJ 1328
一开始的算法想错了,以为雷达的位置只能为整数。后来在网上查,才明白过来。要以island为中心,一雷达辐射半径d为半径做圆,看是否能与coast(即x轴)相交。如果该点与x轴有 两个交点: 就可以得到一个雷达位置的范围 [a,b] 一个交点: 范围为[a,a] 0个交点 : 直接输出 -1,表示不可能。这样就可以得到一个范围数组原创 2013-08-16 21:24:39 · 1491 阅读 · 0 评论 -
基数排序 (Radix sort)
参考: http://en.wikipedia.org/wiki/Radix_sort#Definition计数排序,可以理解成多关键字排序。(因此在排序的时候需要用到稳定的排序算法,如计数排序)它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有转载 2013-06-18 16:56:42 · 1729 阅读 · 0 评论 -
冒泡排序 (Bubble sort)
原文:http://en.wikipedia.org/wiki/Bubble_sort比较两个相邻的元素,后面元素小于前面元素则交换二者位置。An example of bubble sort. Starting from the beginning of the list, compare every adjacent pair, swap their pos转载 2013-09-26 15:41:36 · 881 阅读 · 0 评论 -
选择排序 (Selection sort)
原文:http://en.wikipedia.org/wiki/Select_sort还是先上图:转载 2013-09-26 15:04:52 · 955 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
原文: http://blog.youkuaiyun.com/v_JULY_v/article/details/6279498 海量数据处理:十道面试题与十个海量数据处理方法总结作者:July、youwang、yanxionglu。时间:二零一一年三月二十六日本文之总结:教你如何迅速秒杀掉:99%的海量数据处理面试题。有任何问题,欢迎随时交流、指正。出处:http://blog.c转载 2013-11-19 16:49:06 · 1031 阅读 · 2 评论 -
Top N 算法
原文: http://www.cnblogs.com/xudong-bupt/archive/2013/03/20/2971262.html 问题描述:有N(N>>10000)个整数,求出其中的前K个最大的数。(称作Top k或者Top 10) 问题分析:由于(1)输入的大量数据;(2)只要前K个,对整个输入数据的保存和排序是相当的不可取的。 可以利用数转载 2013-11-19 15:51:18 · 2047 阅读 · 0 评论 -
在字符串中删除另一个字符串中出现的字符
原文: http://blog.youkuaiyun.com/fanzitao/article/details/7900208 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。最简单的方法当然是,对于str1中的每个字母,去str2中扫描转载 2013-11-19 16:26:52 · 2129 阅读 · 0 评论 -
如何检查一个单向链表上是否有环?
原文: http://blog.youkuaiyun.com/fty8788/article/details/6531280有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如果找到环的入口点?解答:1、最简单的方法, 用一个指针转载 2013-11-20 16:29:40 · 1255 阅读 · 0 评论 -
动态规划
相关题目最大连续子序列和 dp[i] 表示以a[i]结尾的子序列最大和,那么状态转移方程为:dp[i] = max(a[i], dp[i-1] + a[i])上台阶问题 有一段楼梯有N级台阶,规定每一步只能跨一级或两级,要登上第N级台阶有几种不同的走法?dp[i] 表示i级台阶的走法数量,那么 dp[i] = dp[i-1] + dp[i-2];正则匹配 htt...原创 2018-04-29 11:46:05 · 271 阅读 · 0 评论