随笔分类 - 数据结构算法理解
摘要:1.定义 对一个有向无环图(Directed Acyclic Graph简称DAG) G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列
阅读全文
摘要:一.什么是贪心算法? 贪心算法又称之为贪婪算法,在考虑问题时,总是做出在当前状况来说最好的算则,而不从整理来考虑。从某种意义上说是局部最优解,贪心算法所得到的答案并不一定是整体最优解,所以在使用贪心算法一定要考虑清楚,是否能使用贪心算法。 选择的贪心策略必须具有无后效性,即当前选择的结果必须不能对之
阅读全文
摘要:1.什么是Hash表? Hash表也称散列表,也有直接称为哈希表,是一种根据关键字值(key-value)而直接进行访问的数据结构。它是通过把关键字映射到数组的下标来加快查找速度。普通的数据结构中查找某一个关键字通常需要遍历整个数据结构,时间复杂度O(n),而哈希表只需要O(1)的时间级。 我们知道
阅读全文
摘要:一、什么是双指针 双指针我所理解地是在遍历对象时,不是使用单个指针进行访问,而是使用两个相同方向或者相反方向的指针进行遍历,从而达到相应的目的。 在JAVA中并没有像C/C++指针地概念,所以这里所说的双指针是指索引,游标或可迭代对象等。 双指针在链表中也有很多用处,比如前面写到过的找出链表中的倒数
阅读全文
摘要:一、什么是回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。 回溯算法实际上一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻
阅读全文
摘要:什么是动态规划 把原问题分解成若干个相对简单的子问题,然后逐步解决子问题从而解决复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。 基本思想 若要解出一个相对复杂的问题,我们需要解出其子问题,再合并子问题从而得到原问题的解。 问题特征 最优子结构:当原问题最优解包含了其子问题的最
阅读全文

浙公网安备 33010602011771号