算法
tingting256
这个作者很懒,什么都没留下…
展开
-
leetcode:Maximum Product Subarray
leetcode最大整数乘积详细分析原创 2015-09-06 15:38:21 · 364 阅读 · 0 评论 -
求无向连通图的最小割点详解以及java源代码实现
部分内容转载自http://www.cnblogs.com/en-heng/p/4002658.html点击打开链接1.相关概念无向连通图:无向图是连通的,当且仅当从任意节点开始的深度优先搜索将会遍历到每一个节点。双连通图:一个无向连通图,如果不存在删除后就使得剩下的图不再连通的节点,那么这样的无向连通图就是双连通的。割点:如果一个图不是双连通的,那么将其删除使图不再连通的节点称为原创 2016-01-09 17:22:26 · 3158 阅读 · 0 评论 -
Kosaraju算法查找有向图的强连通分支
部分转载自:http://www.tuicool.com/articles/uQBz2y1.相关概念给定一个有向图 G = (V, E),对于任意一对顶点 u 和 v,有 u --> v 和 v --> u,亦即,顶点 u 和 v 是互相可达的,则说明该图 G 是强连通的(Strongly Connected)。如下图中,任意两个顶点都是互相可达的。对于无向图,判断原创 2016-01-11 14:29:11 · 2095 阅读 · 0 评论 -
SPFA算法详解
适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。 我们约定有向加权图G不存在负权回路,即最短路径一定存在。当然,我们可以在执行该算法前做一次拓扑排序,以判断是否存在负权回路,但这不是我们讨论的重点。算法思想:我们用数组d记录每个结点的最短路径估计值,用邻接表来存储图G。我们采取的方法是动态转载 2016-04-12 11:20:39 · 357 阅读 · 0 评论 -
Islands Travel 微软2016校园招聘笔试题
AC通过的 Islands Travel 源代码以及java实现原创 2016-04-12 16:07:19 · 726 阅读 · 0 评论 -
卡特兰数(出栈序列以及已知先序遍历求树的形状的个数)
相关内容参考:http://www.nowcoder.com/test/question/done?tid=5127375&qid=26203#summary首先,我们设f(n)=序列个数为n的出栈序列种数。(我们假定,最后出栈的元素为k,显然,k取不同值时的情况是相互独立的,也就是求出每种k最后出栈的情况数后可用加法原则,由于k最后出栈,因此,在k入栈之前,比k小的值均出栈,此处情况原创 2016-09-17 13:05:13 · 1608 阅读 · 0 评论 -
网易编程题暗黑字符串原理解析以及Java源码
一个只包含'A'、'B'和'C'的字符串,如果存在某一段长度为3的连续子串中恰好'A'、'B'和'C'各有一个,那么这个字符串就是纯净的,否则这个字符串就是暗黑的。例如:BAACAACCBAAA 连续子串"CBA"中包含了'A','B','C'各一个,所以是纯净的字符串AABBCCAABB 不存在一个长度为3的连续子串包含'A','B','C',所以是暗黑的字符串你的任务就是计算出长度原创 2016-09-18 00:24:35 · 2097 阅读 · 1 评论 -
计数排序的思想,时间空间复杂度细致分析以及java源代码实现
参考文章:http://www.cnblogs.com/kaituorensheng/archive/2013/02/23/2923877.html京东笔试的时候问了很多计数排序相关的东西,因为自己只了解了一些常用的排序,对于计数排序并没有深入研究导致答得不好,特别补上。1. 计数排序的思想计数排序是基于非比较排序,主要用于对于一定范围内的整数进行排序。采用的是空间换时间的方法。假原创 2016-09-06 11:23:16 · 666 阅读 · 0 评论 -
微软笔试题#1086 : Browser Caching LRC缓存实现
When you browse the Internet, browser usually caches some documents to reduce the time cost of fetching them from remote servers. Let's consider a simplified caching problem. Assume the size of browse原创 2016-10-09 11:11:50 · 773 阅读 · 0 评论 -
hihocoder#1055 : 刷油漆 算法详解以及java源码实现
树的动态规划,类似背包问题原创 2016-09-08 16:36:54 · 1273 阅读 · 0 评论 -
字符串计数-复杂的动态规划题 解析以及Java代码实现
题目描述求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod 1000007。题目分析:1对于字典序的理解 是从首字母第一个开始比较的2.对于此题我们可以想到要求不同长度的字符串的个数 也就是常用的动态规划 对于每一个长度我们分为3部分来求解 比如对于abc 到efg 我们可以这么来求解 对于长度1就不说了 a b c d e 对原创 2016-09-26 10:54:19 · 504 阅读 · 0 评论 -
Kruskal最小生成树算法详解,以及java源代码
1.算法详解Kruskal算法类似于Prim算法,不过Prim算法以点为单位,Kruskal主要考虑边,Kruskal算法的思想是将边排序,之后根据依次出列,如果边上的两点不在一棵树上,我们就可以将这两棵树合并成一棵树,算法思路比Prim算法更加清晰。2. java源代码import java.util.Arrays;import java.util.*;public clas原创 2016-01-07 09:55:10 · 2175 阅读 · 1 评论 -
Prim最小生成树算法详解以及java实现源代码
1.Prim算法核心思想prim算法也是贪婪算法的一个典型例子,有点类似于dijkstra算法。核心思想:将点分为两拨,已经加入最小生成树的,未加入的,找到未加入中距离集合最近的点,添加该点,修改其它点到集合的距离,直到所有结点都加入到最小生成树。2.典型例子使用prim算法的过程:3.java源代码import java.util.*;public clas原创 2016-01-06 18:41:24 · 11792 阅读 · 2 评论 -
Binary Tree Maximum Path Sum
递归求解二叉树的最大路径问题原创 2015-09-26 15:51:35 · 360 阅读 · 0 评论 -
leetcode:Reorder List
Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example,Given {1,2,3,4}, reorder it t原创 2015-09-06 20:21:15 · 423 阅读 · 0 评论 -
leetcode:Substring with Concatenation of All Words
You are given a string, s, and a list of words, words, that are all of the same length. Find all starting indices of substring(s) in s that is a concatenation of each word in wordsexactly once and w原创 2015-09-07 15:37:39 · 435 阅读 · 0 评论 -
排序二叉树,平衡二叉树和红黑树的概念以及相关的操作讲解
排序二叉树,平衡二叉树,红黑树转载 2015-09-17 09:27:19 · 1203 阅读 · 0 评论 -
leetcode130:Surrounded Regions
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.A region is captured by flipping all 'O's into 'X's in that surrounded region.For example,X X X XX O O XX X原创 2015-09-17 20:29:46 · 299 阅读 · 0 评论 -
堆排序的java简单实现以及讲解
堆排序:首先我们需要将数组调整为堆排序的结构,就是保证每个节点的值大于其左节点(2i+1),右节点(2i+2),复杂度为o(n)。之后,我们删除堆顶,复杂度为o(nlogn)。代码如下:public class HeapSort { /**堆排序测试*/ public static void main(String args[]) { Random rand=new Random原创 2015-12-29 21:54:03 · 455 阅读 · 0 评论 -
【经典算法】——KMP,深入讲解next数组的求解
转载自:http://www.cnblogs.com/c-cloud/p/3224788.html1.算法原理字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真正转载 2016-01-01 15:59:56 · 572 阅读 · 0 评论 -
dijkstra算法的java实现
算法思想: 贪婪算法的一个例子。主要是找到该阶段的一个最优解。首先把结点分为两拨,open(未计算出最小路径的结点),close(已经计算出最小路径的结点)。每次我们都从start结点的子节点中找到一个最短的结点nearest加入,然后更新其未被加入的子节点的距离信息,递归的继续加入,直到start子节点的所有结点都被加入,然后以nearest为节点继续查找,直到所有结点都被加入。算法复杂度为o(原创 2016-01-05 11:12:26 · 891 阅读 · 0 评论 -
邻接矩阵的dijkstra算法 迭代法以及使用PriorityQueue的java实现
import java.util.PriorityQueue;public class DijkstraMy { //设置最大值 int MAX=999; //顶点总个数 int total; //邻接矩阵表示距离 int[][] matrix; //结点相关信息 String[] nodes;原创 2016-01-05 21:30:48 · 1890 阅读 · 0 评论 -
网络流-最大流 EdmondKarp算法 详细讲解 以及java实现源代码
部分内容转载自:http://www.cnblogs.com/zsboy/archive/2013/01/27/2878810.html 点击打开链接最大流的含义,就是说从源点到经过的所有路径的最终到达汇点的所有流量和。1. EK算法的核心:反复寻找源点s到汇点t之间的增广路径(路径上的最小边值就是可以用过路径的最大流量),每找到一条路径,我们正向减去对应边的流量,并且反向增加流量原创 2016-01-06 14:24:58 · 3357 阅读 · 0 评论 -
01背包,完全背包,多重背包问题详细介绍以及源代码实现
背包问题部分内容转载自:http://www.cppblog.com/tanky-woo/archive/2010/07/31/121803.html背包的基本模型就是给你一个容量为V的背包在一定的限制条件下放进最多(最少?)价值的东西一般常用动态规划,存在以前状态向当前状态的一个转换,先求出之前状态的最优解,然后根据之前的状态得到现在状态的最优解。常见的有原创 2016-04-14 13:58:19 · 5445 阅读 · 3 评论