摘要:
Dijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论... 阅读全文
随笔分类 - ACM
快速排序
2014-07-26 19:58 by Loull, 252 阅读, 收藏, 编辑
摘要:
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还... 阅读全文
POJ1177和POJ1389 。。。
2014-06-12 20:43 by Loull, 301 阅读, 收藏, 编辑
摘要:
POJ 1177 Picture 经典线段树+离散化+扫描线POJ 1177 Picture (线段树+离散化+扫描线) 详解线段树(segment tree)http://www.java3z.com/cwbwebhome/article/article17/acm890.html?id=4660... 阅读全文
线段树 Interval Tree
2014-06-12 18:55 by Loull, 731 阅读, 收藏, 编辑
摘要:
一、线段树线段树既是线段也是树,并且是一棵二叉树,每个结点是一条线段,每条线段的左右儿子线段分别是该线段的左半和右半区间,递归定义之后就是一棵线段树。例题:给定N条线段,{[2, 5], [4, 6], [0, 7]}, M个点{2, 4, 7},判断每个点分别在几条线段出现过?1、构建线段树2、处... 阅读全文
树状数组
2014-06-12 14:58 by Loull, 940 阅读, 收藏, 编辑
摘要:
一、树状数组树状数组是一个优美小巧的数据结构,在很多时候可以代替线段树。一句话概括就是,凡是树状数组可以解决的问题,线段树都可以解决,反过来线段树可以解决的问题,树状数组不一定能解决。树状数组英文名称为Binary Index Tree,直译过来就是二进制索引树,我觉得二进制索引树更能说明其本质。树... 阅读全文
LCA和RMQ
2014-06-12 10:35 by Loull, 507 阅读, 收藏, 编辑
摘要:
下面写提供几个学习LCA和RMQ的博客,都很通熟易懂http://dongxicheng.org/structure/lca-rmq/这个应该是讲得最好的,且博主还有很多其他文章,可以读读,感觉认真读了这篇,都不太需要看别的资料了,百度和谷歌搜索的第一位都是他,好东西大家一起学习http://sct... 阅读全文
RMQ (Range Minimal Query) 问题 ,稀疏表 ST
2014-06-10 21:43 by Loull, 794 阅读, 收藏, 编辑
摘要:
RMQ ( 范围最小值查询 ) 问题是一种动态查询问题,它不需要修改元素,但要及时回答出数组 A 在区间 [l, r] 中最小的元素值。RMQ(Range Minimum/Maximum Query):对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j= n) break; //如... 阅读全文
winner tree 胜者树
2014-06-10 19:01 by Loull, 1283 阅读, 收藏, 编辑
摘要:
在树形选择排序中,利用锦标赛思想建立的树称为胜者树。1、每个非终端节点存储的是左右孩子节点中的优胜者。2、通过减少比较次数,提高效率。3、胜者树就是一颗特殊的线段树。一、构建树Procedure buildmint; 复杂度 O(n)var i,j,k:longint;begin i:=N; j... 阅读全文
递归
2014-04-25 10:03 by Loull, 368 阅读, 收藏, 编辑
摘要:
一、递归关键之处1、停止条件即如果问题很简单,已经是个不能再分解的任务了,那么就不要用递归来解决。比如这里的number只有一位时。这种没有任何递归调用的情况即是停止条件或基本条件。2、递归调用递归调用自身,用于解决比较简单的问题,在这里即输出除最后一位之外的所有位。二、示例案例1两个人从1开始,轮... 阅读全文
寻找第K大的数
2014-04-23 16:17 by Loull, 309 阅读, 收藏, 编辑
摘要:
在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,解决这个问题的方法很多。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取... 阅读全文
算法思想
2014-04-23 13:53 by Loull, 548 阅读, 收藏, 编辑
摘要:
1、递归法所谓递归,就是指如果需要求解当前状态就需要求解其依赖的迁移状态。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。采用递归描述的算法通常有这样的特征:1)为求解规模为N的问题,设法将它分解成规模较小的问题;2)然后从这些小问题的... 阅读全文
LIS 最长递增子序列
2014-04-22 00:12 by Loull, 363 阅读, 收藏, 编辑
摘要:
一、最长公共子序列 经典的动态规划问题,大概的陈述如下: 给定两个序列a1,a2,a3,a4,a5,a6......和b1,b2,b3,b4,b5,b6.......,要求这样的序列使得c同时是这两个序列中的部分(不要求连续),这个就叫做公共子序列,然后最长公共子序列自然就是所有的子序列中最长的... 阅读全文
LeetCode Median of Two Sorted Arrays
2014-04-21 21:56 by Loull, 389 阅读, 收藏, 编辑
摘要:
Median of Two Sorted ArraysThere are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run... 阅读全文
LeetCode TwoSum
2014-04-21 15:56 by Loull, 194 阅读, 收藏, 编辑
摘要:
TwoSumGiven an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the ... 阅读全文
Cracking the coding interview--Q2.4
2013-07-30 17:02 by Loull, 254 阅读, 收藏, 编辑
摘要:
Cracking the coding interview--Q2.4December 16, 2012 作者:Hawstein 出处:http://hawstein.com/posts/2.4.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。题目原文:You have two numbers represented by a linked list, where each nodecontains a single digit. The digits are stored .. 阅读全文
Cracking the coding interview--Q2.2
2013-07-30 14:45 by Loull, 269 阅读, 收藏, 编辑
摘要:
题目原文:Implement an algorithm to find the nth to last element of a singly linked list.译文:实现一个算法从一个单链表中返回倒数第n个元素。解答这道题的考点在于我们怎么在一个单链表中找到倒数第n个元素? 由于是单链表,所以我们没办法从最后一个元素数起,然后数n个得到答案。 但这种最直观的思路显然是没错的,那我们有没有办法通过别的方式,从最后的元素数起数 n个来得到我们想要的答案呢。这个次序颠倒的思路可以让我们联想到一种数据结构:栈。我们如果遍历一遍单链表,将其中的元素压栈,然后再将元素一一出栈。那么, 第n个出栈的 阅读全文
Cracking the coding interview--Q2.1
2013-07-30 14:23 by Loull, 248 阅读, 收藏, 编辑
摘要:
题目原文:Write code to remove duplicates from an unsorted linked list.FOLLOW UPHow would you solve this problem if a temporary buffer is not allowed?译文:从一个未排序的链表中移除重复的项进一步地,如果不允许使用临时的缓存,你如何解决这个问题?解答如果可以使用额外的存储空间,我们就开一个数组来保存一个元素的出现情况。 对于这种情况,最好的解决方法当然是使用哈希表,但令人非常不爽的是C++标准里是没有 哈希表的(java里有)。网上有人用ext下的hash_ 阅读全文
Cracking the coding interview--Q1.8
2013-07-15 17:20 by Loull, 293 阅读, 收藏, 编辑
摘要:
题目原文:Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring ( i.e., “waterbottle” is a rotation of “erbottlewat”).译文:假设你有一个isSubstring函数,可以检测一个字符串是否是另一个字符串 阅读全文
Cracking the coding interview--Q1.7
2013-07-15 17:06 by Loull, 211 阅读, 收藏, 编辑
摘要:
题目原文:Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.译文:写一个函数处理一个MxN的矩阵,如果矩阵中某个元素为0,那么把它所在的行和列都置为0.解答简单题。遍历一次矩阵,当遇到元素等于0时,记录下这个元素对应的行和列。 可以开一个行数组row和列数组col,当元素a[i][j]等于0时, 就把row[i]和col[j]置为true。第二次遍历矩阵时,当某个元素对应的行row[i] 或列col[j]被设置为true,说明该元素在需要 阅读全文
Cracking the coding interview--Q1.6
2013-07-15 16:28 by Loull, 215 阅读, 收藏, 编辑
摘要:
题目原文:Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place?译文:一张图像表示成NxN的矩阵,图像中每个像素是4个字节,写一个函数把图像旋转90度。 你能原地进行操作吗?(即不开辟额外的存储空间)解答我们假设要将图像逆时针旋转90度,顺时针是一个道理。如果原图如下所示:1 2 3 4 5 6 7 8 9 10 11 12 1 阅读全文