数据结构
文章平均质量分 66
花小胖
这个作者很懒,什么都没留下…
展开
-
【数据结构】树的高度和深度
1.高度结点的高度:从该节点向下分支的叶节点开始自底向上逐层累加。对于高度的理解,就拿楼房来说,我们会从底层开始往上数,假如楼有6层,则我们会说,这个楼有6层楼那么高。所以高度就是以从下往上对比,这是我们的习惯。而在树中,树的高度也是从下往上数,如图所示:K节点在树的底层,是一个叶子节点,则一般定义为K的高度在最低为1,以此类推,G节点高度为32.深度结原创 2017-04-18 21:05:10 · 19194 阅读 · 0 评论 -
红黑树 基本操作
红黑树首先是一棵二叉查找树,它每个结点都被标上了颜色(红色或黑色),红黑树满足以下5个性质:1、 每个结点的颜色只能是红色或黑色。2、 根结点是黑色的。3、 每个叶子结点都带有两个空的黑色结点(被称为黑哨兵),如果一个结点n的只有一个左孩子,那么n的右孩子是一个黑哨兵;如果结点n只有一个右孩子,那么n的左孩子是一个黑哨兵。4、 如果一个结点是红的,则它的两个儿子都是原创 2017-05-17 16:20:10 · 451 阅读 · 0 评论 -
java----HashMap
HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地存、取value。下面就来分析HashMap的存取。一、定义 HashMap实现了Map转载 2017-05-15 21:46:35 · 189 阅读 · 0 评论 -
HashSet HashMap
一、 HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 二、 HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比转载 2017-07-25 13:44:02 · 225 阅读 · 0 评论 -
ArrayDeque
ArrayDeque不是线程安全的。 ArrayDeque不可以存取null元素,因为系统根据某个位置是否为null来判断元素的存在。 当作为栈使用时,性能比Stack好;当作为队列使用时,性能比LinkedList好。 1. 两个重要的索引:head和tail Java代码 // 第一个元素的索引 private transient int h转载 2017-07-25 14:41:30 · 478 阅读 · 0 评论 -
HashSet 输入为什么是有序的
首先,要明确“不保证有序”和“保证无序”不等价,HashSet的iterator是前者而不是后者,所以在一次运行中看到有序的结果也是正常的,但不能依赖这个有序行为。况且HashSet并不关心key的“排序”,就算其iterator“有序”通常也是说“按元素插入顺序”(LinkedHashSet就支持插入顺序遍历)。题主在此看到的所谓“有序”纯粹是个巧合。所以,想要确保有序并且集合中无重原创 2017-08-26 13:07:18 · 3031 阅读 · 1 评论 -
最大子序列和的4中Java算法实现
第一种算法运行时间为O(N^3),第二种算法运行时间为O(N^2),第三种算法运行时间为O(nlogn),第四种算法运行时间为线性N[java] view plain copy print?public class Test { public static void main(String[] args) {转载 2017-08-27 14:41:19 · 295 阅读 · 0 评论 -
jdk7中Arrays.sort()和Collections.sort()排序方法使用注意
转载:https://blog.csdn.net/shadow_zed/article/details/727589121. 为什么写这篇文章这篇文章的根源是在产品中发现了一个诡异的bug:只能在产品环境下重现,在我的本地开发环境无法重现,而双方的代码没有任何区别。最后用remotedebug的方法找到异常所在:Exception in thread "main"Java.lang....转载 2018-08-20 18:24:15 · 1124 阅读 · 1 评论 -
GUAVA的使用
转载https://blog.csdn.net/fd_mas/article/details/525833121 字符串处理1.1 分割(Splitter)JDK内建的字符串拆分工具(split)有一些古怪的特性,绝对不要用。比如,它会悄悄丢弃了尾部的分隔符。Splitter强大安全而且是链式编程。比如,要分割如下字符串:alex,,45, tianshan ro...转载 2018-08-23 21:31:16 · 1508 阅读 · 0 评论