算法
文章平均质量分 74
卡巴拉的树
记录编程心得
展开
-
[Leetcode 98] Validate Binary Search Tree
原题: Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: •The left subtree of a node contains only nodes with keys less than the node’s key.原创 2016-01-13 18:03:53 · 326 阅读 · 0 评论 -
[Leetcode 136] Single Number
原题:Given an array of integers, every element appears twice except for one. Find that single one.Note: Your algorithm should have a linear runtime complexity. Could you implement it without using extra原创 2016-01-17 11:04:37 · 330 阅读 · 0 评论 -
[Leetcode 226] Invert Binary Tree
Homebrew是OS X平台上的包管理工具,在用Mac的程序员基本都知道这个工具。 HomeBrew的开发者是Max Howell。然而面试谷歌时却蛋疼了。Max Howell在Twitter发帖: 可见,会手写反转二叉树多么重要。正好Leetcode上有这个题目,下面进入正题。二叉树是数据结构里一个重要的概念。 而反转二叉树的基本意思就是下图这样。 Invert a binary t原创 2016-01-13 16:03:55 · 610 阅读 · 0 评论 -
图的基本算法(BFS和DFS)
图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系。对象由顶点(V)表示,而对象之间的关系或者关联则通过图的边(E)来表示。 图可以分为有向图和无向图,一般用G=(V,E)来表示图。经常用邻接矩阵或者邻接表来描述一副图。 在图的基本算法中,最初需要接触的就是图的遍历算法,根据访问节点的顺序,可分为广度优先搜索(BFS)和深度优先搜索(DFS)。广度优先搜索(BFS) 广度优先原创 2016-02-03 15:01:22 · 7292 阅读 · 1 评论 -
图的基本算法(最小生成树)
假设以下情景,有一块木板,板上钉上了一些钉子,这些钉子可以由一些细绳连接起来。假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样的情况,即用最少的细绳把所有钉子连接起来。 更为实际的情景是这样的情况,在某地分布着N个村庄,现在需要在N个村庄之间修路,每个村庄之前的距离不同,问怎么修最短的路,将各个村庄连接起来。 以上这些问题都可以归纳为最小生成树问题,用正式的表述方法描述为:给定一个原创 2016-03-29 10:40:49 · 1551 阅读 · 0 评论 -
图的基本算法(单源最短路径)
在许多路由问题中,寻找图中一个顶点到另一个顶点的最短路径或最小带权路径是非常重要的提炼过程。正式表述为,给定一个带权有向图G = (V, E) , 顶点s到v中顶点t的最短路径为在边集E中连接s到t代价最小的路径。要做到这一点首先要解决更为一般的单源最短路径问题。在单源最短路径问题中,计算从一个起始顶点s到其他与之相邻顶点之间的最短路劲。Dijkstra算法解决单源最短路径问题的方法之一就是Dijk原创 2016-04-08 15:02:11 · 5790 阅读 · 0 评论