dm_vincent的专栏

后端工程师,前端技术爱好者。

[Java 8] (9) Lambda表达式对递归的优化(下) - 使用备忘录模式(Memoization Pattern)

使用备忘录模式(Memoization Pattern)提高性能 这个模式说白了,就是将需要进行大量计算的结果缓存起来,然后在下次需要的时候直接取得就好了。因此,底层只需要使用一个Map就够了。 但是需要注意的是,只有一组参数对应得到的是同一个值时,该模式才有用武之地。 在很多算法中,典型的...

2014-10-30 09:58:15

阅读数 7084

评论数 2

[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归

递归优化 很多算法都依赖于递归,典型的比如分治法(Divide-and-Conquer)。但是普通的递归算法在处理规模较大的问题时,常常会出现StackOverflowError。处理这个问题,我们可以使用一种叫做尾调用(Tail-Call Optimization)的技术来对递归进行优化。同时...

2014-10-29 09:56:32

阅读数 12459

评论数 1

求解强连通分量算法之---Kosaraju算法

本文提纲: 问题描述 Kosaraju 算法 问题描述: 什么是强连通分量(StronglyConnected Component)(或者,被称为强连通子图,Strongly Connected Subgraph)? 首先需要明白的是,强连通分量只可能...

2013-01-29 21:50:57

阅读数 25567

评论数 8

由“栈的逆序”谈谈递归算法

最近看到一道题目:要求将一个栈逆序,使用递归。   我们先看看最常规的解法应该是怎样的,显然对于“逆序”这种问题描述,栈这种数据结构就会蹦入我们的脑海。   实现代码如下: public static LinkedStack reverseStackDirectly(LinkedSt...

2012-09-22 20:23:51

阅读数 7408

评论数 0

并查集(Union-Find) 应用举例 --- 基础篇

本文是作为上一篇文章 《并查集算法原理和改进》 的后续,焦点主要集中在一些并查集的应用上。材料主要是取自POJ,HDOJ上的一些算法练习题。 首先还是回顾和总结一下关于并查集的几个关键点: 以树作为节点的组织结构,结构的形态很是否采取优化策略有很大关系,未进行优化的树结构可能会...

2012-07-22 23:54:14

阅读数 30076

评论数 26

拓扑排序的原理及其实现

本文将从以下几个方面介绍拓扑排序: 拓扑排序的定义和前置条件和离散数学中偏序/全序概念的联系典型实现算法 Kahn算法基于DFS的算法 解的唯一性问题实际例子 取材自以下材料: http://en.wikipedia.org/wiki/Topological_sorting http:...

2012-07-04 13:27:31

阅读数 186020

评论数 44

并查集(Union-Find)算法介绍

本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。 更多的信息可以参考Algorithms 一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。 原文中更多的是给出一些结论,我尝试给出一些思路上的过程,即为什么要使...

2012-06-12 13:57:16

阅读数 180539

评论数 86

提示
确定要删除当前文章?
取消 删除