- 博客(5)
- 收藏
- 关注
原创 用邻接链表存储无向图和有向图
上一篇文章我们说到用邻接矩阵存储有向图和无向图,这种方法的有点是很直观的知道点与点之间的关系,查找的复杂度是为O(1)。但是这种存储方式同时存在着占用较多存储空间的问题,邻接矩阵存储很好理解,但是,有时候太浪费空间了,特别是对于顶点数多,但是关联关系少的图。举个极端的例子。下图中,5个顶点都是孤立的,然而为了存储边的信息,要分配一个5X5的矩阵。本来一条边都没有,没必要用存
2017-04-08 09:48:44
10274
原创 有向图和无向图用邻接矩阵储存
一般存储图的方式有两种:一是用邻接矩阵表示,二是用邻接链表。所谓用邻接矩阵,是用一个二维数组存储,边使用矩阵来构建模型,这使得每一个顶点和其它顶点之间都有边的有无 的 表示的机会。若有边,则他们交点 为1 ,否则为0。当然,如果是一副边有权值的图,交点存储的是他们边的权值。1、首先收一下无向图的存储:无向图的边的矩阵一定是一个对称矩阵,因为无向图只关心边是否存在,而不关心方向,
2017-04-08 09:15:47
48731
10
原创 二维数组中查找问题
给定一个M*N的二维数组,在每行、或者每列上的元素都是按升序排列的(从小到大),既:matrix[i][j]要求设计一个算法,在矩阵中查找是否存在给定的值(target)因为这是一个每行每列的矩阵,我们很快就想到可以对每一行或者每一列进行二分查找,看target是否存在于二维数组中,对M*N二维矩阵,此算法复杂度为O(M*logN),很容易写出以下代码:#include #inc
2017-03-14 12:42:57
416
原创 最大子序列求解及分治算法的一些例子
题目大概意思是:在一个乱序的数列中,找出其相加之和最大的子列。例如在[-2,1,-3,4,-1,2,1,-5,4]子列为[4,-1,2,1]有最大和为6。我的解题思路就是做一个历遍,首先从数列第一位与后面的各个位相加,一直加到末尾,找出第一位数中最大和子列的最后一位数;然后再从第二位数往后加起来,以此类推。找到数组中的某一位数相加到它之后的某位数为最大。#include using name
2017-03-07 10:27:05
657
原创 Find the disappear numbers in a array
这个问题意思是 从1到n(n为数组中的最大项)中找出数组中不包含的数。我的思路是用数组中含有的数如a,将数值第a位既array【a】变为负数,那么数组经过变换后,哪一位的数还是正数,那么该位的下标加一就是不在数组中的。如 4 2 2 3 8 7 3 1 变换后是 -4 -2 -2 -3 8 7 -3 -1这第五位和第六位(下标分别是4 、5)为正,那么5、6就不存在改数组中。#
2017-02-25 15:52:06
244
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人