
计算机算法&数据结构
zc02051126
这个作者很懒,什么都没留下…
展开
-
图的拓扑排序
1 数据结构如下2 3 00 6 00 1 02 0 011 12 0 9 12 0 9 10 0 9 11 03 5 08 7 05 4 00 5 06 4 06 9 07 6 0原创 2014-06-07 12:05:00 · 811 阅读 · 0 评论 -
Datastructures for external memory
http://blog.omega-prime.co.uk/?p=197转载 2017-01-09 10:32:01 · 401 阅读 · 0 评论 -
leetcode-二分查找:Search a 2D Matrix
题目介绍在mxn的矩阵中搜索目标值,如果找到返回true,否则返回false。矩阵的形式如下 - 每行的整数都是从大到小排列 - 每行的第一个元素值比上一行的最后一个元素值小 - 例如如下矩阵 [1 ,3 ,5 ,7 ] [10,11,16,20] [23,30,34,50] 目标值3在其中,所以返回true解题思路每行数据用二分查找,如果找到了就返回true如果所有的行都原创 2015-07-14 10:56:46 · 485 阅读 · 0 评论 -
leetcode-动态规划:Unique Binary Search Trees
题目介绍这道题要求可行的二叉查找树的数量解题思路参考http://www.tuicool.com/articles/IFZbAr 其实二叉查找树可以任意取根,只要满足中序遍历有序的要求就可以。从处理子问题的角度来看,选取一个结点为根,就把结点切成左右子树,以这个结点为根的可行二叉树数量就是左右子树可行二叉树数量的乘积,所以总的数量是将以所有结点为根的可行结果累加起来。写成表达式如下: C0=0C原创 2015-07-24 10:21:33 · 512 阅读 · 0 评论 -
leetcode-动态规划:Triangle
题目介绍在一个三角形中,找到从上到下的最短路径的长度。每次移动只能从它上面行的相邻因素移动到下面行的元素。例如如下的三角形,从上到下的最短路径为2+3+5+1=11。 [2] [3,4] [6,5,7] [4,1,8,3]解题思路动态规划-O(mn)O(mn)空间复杂度 i,ji,j表示三角形的行数和列数,dp[i][j]dp[i][j]表示从顶部到第ii行,第jj列路径原创 2015-07-24 16:58:52 · 529 阅读 · 0 评论 -
leetcode-二分查找:Find Peak Element
题目介绍峰值元素值该元素大于它的邻居元素,数组中的元素满足num[i]!=num[i+1],找到峰值元素的索引,并返回之。数组中可能包括多个峰值,只要找到其中一个即可。例如数组[1,2,3,1]的峰值元素为3,所以返回的索引为2解体思路i = 0, j=数组长度,如果nums[mid]实现代码/****************************************************原创 2015-07-14 17:07:26 · 507 阅读 · 0 评论 -
leetcode-二分查找:Search for a range
题目描述给定一个已经排序的整数数组,找出目标值在数组中的索引范围,算法要求的时间复杂度为O(log(n)),如果被查找的目标值不在数组内则返回[-1,-1]. 例如在数组[5,7,7,8,8,10]中查找目标值8,得到的索引区间为[3,4]。解题思路利用二分查找,当找到mid所对应的值是目标值时,继续在[i,mid]和[mid,j]范围内继续二分查找,在这两个区间内返回的临界值就是左右区间值。原创 2015-07-14 10:13:00 · 606 阅读 · 0 评论 -
leetcode-二分搜索:Search in Rotated Sorted Array
题目介绍在一个部分排序的数组中,查找目标值。部分排序的数组的形式如下 0,1,2,3,4,5,6,7->4,5,6,7,0,1,2 如果搜索到目标值则返回目标值的索引,否则返回-1思路:首先找到临界的索引index,例如什么的例子中的临界索引为3判断目标值所在的区间是[0,index], 还是在[index+1, N]在含有目标值的区间内使用二分搜索代码如下/**********原创 2015-07-13 17:06:05 · 448 阅读 · 0 评论 -
leetcode-二分搜索:求一个数的平方根
解题思路:设double low=0,double up=xdouble mid = (low + up) / 2如果mid * mid > x,则up = mid;如果mid * mid < x,则low = mid;如果fabs(mid * mid - x) <= 1e-6,则返回mid,否则继续迭代计算程序如下#include<iostream>#include<math.h>#i原创 2015-07-13 11:35:08 · 4494 阅读 · 0 评论 -
leetcode-二分搜索:Search Insert Position
题目描述:给定一个已经排序的数组和一个目标值,如果数组中存在这个目标值,则返回目标值所在的数组索引,如果不存在则返回目标值应该插入的数组位置,以使插入后的数组也是有序的。代码如下:/************************************************************************* > File Name: bisearch.cpp >原创 2015-07-13 16:19:40 · 615 阅读 · 0 评论 -
二分搜索应用
用二分搜索查找数组中比某个数大的或比某个数小的第一个数。例如在数组中查找比7大的数为8,比7小的数为6,如果能查找到则返回对应数的索引。如果返回的索引查处的数组sums的取值范围说明没找到合适的值 0 1 2 3 4 5 0 2 5 6 8 12-查找比某个数大的第一个数Python代码如下def searchFirstBigThan(left, ri原创 2015-06-03 10:53:28 · 666 阅读 · 0 评论 -
非递归实现二叉树的前序、中序、后序遍历
二叉树1 非递归前序遍历二叉树1.1 递归前序遍历二叉树 按照教科书上的做法,前序遍历过程如下:先访问根节点,再访问左节点,再访问右节点另一种访问方式为:按照图中红线的轨迹,第一次遇到的节点即为前序遍历的过程按照以上两种方法中的任意一种遍历都可以得到如下结果,前序遍历结果 A->B->D->G->H->C->E->I->F 1.2 非递归实现前序遍历用栈可以实现二叉树的非递归前序遍原创 2015-05-08 14:40:01 · 1113 阅读 · 0 评论 -
符号表-二叉查找树
实现了二叉查找树的:插入,查找,原创 2014-07-13 16:53:33 · 785 阅读 · 0 评论 -
有向加权图的最短路径算法-Dijkstra
1 图的数据结构如下4 5 0.355 4 0.354 7 0.375 7 0.287 5 0.285 1 0.320 4 0.380 2 0.267 3 0.391 3 0.292 7 0.346 2 0.403 6 0.526 0 0.586 4 0.93原创 2014-06-01 12:34:39 · 7495 阅读 · 0 评论 -
图的遍历算法-DFS
1 数据文件如下原创 2014-06-02 16:31:54 · 929 阅读 · 0 评论 -
图的遍历-BFS
1 数据文件如下0 52 42 31 20 13 43 50 22 C++实现DFS算法Graph.h/* * Graph.h * * Created on: 2014年5月17日 * Author: zhongchao */#ifndef _GRAPH_#define _GRAPH_#include #inclu原创 2014-06-02 16:41:01 · 876 阅读 · 0 评论 -
有向加权图的最短路径算法-Prim
1 无向加权图的数据格式如下4 5 0.354 7 0.375 7 0.280 7 0.161 5 0.320 4 0.382 3 0.171 7 0.190 2 0.261 2 0.361 3 0.292 7 0.346 2 0.403 6 0.526 0 0.586 4 0.932 实现的原创 2014-06-01 13:47:25 · 3249 阅读 · 0 评论 -
无向图的连通子图
1 图的数据如下0 54 30 19 126 45 40 211 129 100 67 89 115 3原创 2014-06-07 12:16:08 · 2974 阅读 · 1 评论 -
What are the lesser known but useful data structures?
http://stackoverflow.com/questions/500607/what-are-the-lesser-known-but-useful-data-structures转载 2017-01-09 10:35:33 · 440 阅读 · 0 评论