随笔分类 -  算法

摘要:题目: 输入如下面所示: 前一行是m行、n列 后面是这个m行n列的数据,从任意一个1出发,可上下、左右、斜角遍历 要求输出有多少个连通图、连通图中包含的最大连通个数。 10,10 0,0,0,0,0,0,0,0,0,0 0,0,0,1,1,0,1,0,0,0 0,1,0,0,0,0,0,1,0,1 阅读全文
posted @ 2018-08-12 12:25 开拖拉机的蜡笔小新 阅读(513) 评论(0) 推荐(0) 编辑
摘要:1.你了解的各种锁? 偏向锁、轻量级锁、重量级锁 简单说下先偏向锁、轻量级锁、重量级锁三者各自的应用场景: 偏向锁:只有一个线程进入临界区; 轻量级锁:多个线程交替进入临界区; 重量级锁:多个线程同时进入临界区。 偏向锁 在没有实际竞争的情况下,还能够针对部分场景继续优化。如果不仅仅没有实际竞争,自 阅读全文
posted @ 2018-07-07 14:34 开拖拉机的蜡笔小新 阅读(403) 评论(0) 推荐(0) 编辑
摘要:36.两个链表的第一个公共节点 题目描述 输入两个链表,找出它们的第一个公共结点。 1.具有重合节点的两个链表是一个Y字性,用两个堆栈放这两个链表,从尾部开始遍历,直到遍历到最后一个重合节点。 这种算法时间复杂度为O(m+n),但是空间复杂度也是O(m+n),相当于是空间换时间 /* public 阅读全文
posted @ 2018-06-27 22:49 开拖拉机的蜡笔小新 阅读(736) 评论(0) 推荐(0) 编辑
摘要:26.二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 中序遍历思路:按照右中左的顺序 阅读全文
posted @ 2018-06-08 21:49 开拖拉机的蜡笔小新 阅读(272) 评论(0) 推荐(0) 编辑
摘要:1.二维数组中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 利用二维数组由上到下,由左到右递增的规律, 那么选取右上角a[row][col]与targe 阅读全文
posted @ 2018-05-24 22:54 开拖拉机的蜡笔小新 阅读(787) 评论(0) 推荐(0) 编辑
摘要:动态规划 矩阵的总路径数 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 思路: 我们可以把棋盘的左下角看做二维坐标的原点(0,0),把棋盘的右上角看做二维坐标(M,N)(坐标系的单位长度为小方格的变长) 用f(i,j)表示移动到坐标f(i,j)的走法总数,其中0=<i,j 阅读全文
posted @ 2018-05-02 10:08 开拖拉机的蜡笔小新 阅读(298) 评论(0) 推荐(0) 编辑
摘要:文章转载自:最小生成树-Prim算法和Kruskal算法 图的生成树是它的一棵含有所有顶点的无环连通子图,一棵加权图的最小生成树是它的一棵权值最小的生成树。 Prim算法 算法简单描述 1).输入:一个加权连通图,其中顶点集合为V,边集合为E; 2).初始化:Vnew = {x},其中x为集合V中的 阅读全文
posted @ 2017-06-10 10:45 开拖拉机的蜡笔小新 阅读(252) 评论(0) 推荐(0) 编辑
摘要:1.有向图的数据类型 使用Bag表示有向图,其中边v->w表示为顶点v所对应的邻接链表中包含一个w顶点,与无向图不同的是,这里每条边只会出现一次.有向图的数据结构类型如下: 2.有向图中的可达性 无向图的连通性相似,同利用深度优先搜索可以解决有向图中 单点可达性问题:即:给定一幅有向图和一个起点s, 阅读全文
posted @ 2017-06-08 22:32 开拖拉机的蜡笔小新 阅读(1857) 评论(0) 推荐(0) 编辑
摘要:首先在这里介绍下Algorithms这个网站第二部分,是Algorithms这本书的在线课程。 另外Coursera上的图上的算法的这个课程也很不错。 图的几种表示方法: 用那种方式(数据结构)表示图,这包含以下两个要求:(1) 空间要合适 (2)实例的方法的实现一定要快 那么有三种可供选择: (1 阅读全文
posted @ 2017-06-08 17:45 开拖拉机的蜡笔小新 阅读(1710) 评论(0) 推荐(0) 编辑
摘要:时间复杂度上,红黑树在平均情况下插入,查找以及删除上都达到了lgN的时间复杂度。 那么有没有查找效率更高的数据结构呢,答案就是本文接下来要介绍了散列表,也叫哈希表(Hash Table) 什么是哈希表 哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key 阅读全文
posted @ 2017-05-21 20:27 开拖拉机的蜡笔小新 阅读(560) 评论(0) 推荐(0) 编辑
摘要:1.顺序查找 在查找中我们一个一个顺序的遍历表中的所有键并使用equals()方法来查找匹配的键。 优点:对数组的结构没有特定的要求,可以使用数组或者链表实现,算法简单。 缺点:当数组个数n较大时,效率低下。 时间复杂度:O(n) 2.基于有序数组的二分查找 在查找时,我们先将被查找的键和子数组的中 阅读全文
posted @ 2017-05-21 16:48 开拖拉机的蜡笔小新 阅读(863) 评论(0) 推荐(0) 编辑