转载于:https://blog.csdn.net/u013250416/article/details/80558542 一、基本思想 一般来说,只要问题可以划分为规模更小的子问题,并且原问题的最优解中包含了子问题的最优解,则可以考虑用动态规划解决。动态规划的实质是分治思想和解决冗余 ...
上次我们学习了环形链表的数据结构,那么接下来我们来一起看看下面的问题, 判断一个单向链表是否是环形链表 看到这个问题,有人就提出了进行遍历链表,记住第一元素,当我们遍历后元素再次出现则是说明是环形链表,如果没有这是一个单向非环形链表。 我们来分析下上述的解决方法,我们分析这个程序的时间复杂度则是O n 。 那么是不是最优的选择呢 我们引入新的解决思路,那就是 快慢指针 。 我们来看看接下来的解决思 ...
2017-11-14 08:51 0 2313 推荐指数:
转载于:https://blog.csdn.net/u013250416/article/details/80558542 一、基本思想 一般来说,只要问题可以划分为规模更小的子问题,并且原问题的最优解中包含了子问题的最优解,则可以考虑用动态规划解决。动态规划的实质是分治思想和解决冗余 ...
一、B树 B树是一种多叉平衡查找树,由于是多叉结构,对于元素数量非常多的情况下,树的深度不会像二叉结构那么大,可以保证查询效率。 二、B+树 B+是是B树的一种变形, 1、特点: (1)、所有叶子结点包含全部关键字信息,及指向含有这些关键字记录的指针,且叶子节点中关键字 ...
深度优先遍历从某个顶点出发,首先访问这个顶点,然后访问该顶点的第一个未被访问的邻结点,以此邻结点为顶点继续访问,同时记录其余未访问的邻接点,当一个顶点的所有邻接点都被访问时,回退一个顶点,将未访问的邻 ...
动态规划算法、分治法与贪心法都应用于:大问题可以分解为子问题求解的题目 一、分治法: 分治法容易理解,主要思想是:将大问题分解成子问题,求解出不同子问题的解,由各个子问题的解得到最终解。所有的子问题可能相关,也可能不相关,如果子问题相关,则求解子问题的解时,会重复计算,进行不必要的计算 ...
一、 平衡二叉树:除叶子节点外,任意节点的子树高度之差不超过1。 二、完全二叉树:除了最底下一层外,每层都是满节点,最底下一层节点是从左到右排列的。 三、二叉搜索树:左儿子val<父节点va ...
Java内存结构是每个java程序员必须掌握理解的,这是Java的核心基础,对我们编写代码特别是并发编程时有很大帮助。由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。 首先,我们回顾一下Java程序执行流程: 如上图所示 ...
1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类 ...
华为 JAVA 面试题 (后记:我没想到华为面试题是不寻常,,至少对我这种鸟来说是这样。对我个人来说。看看这样的题。可能比看《Think In Java》都还要好。因为这里面有很多的东西,都是我们平时没有太在意,或者是只是懂一点皮毛而已,通过做一下 ...