set内是一颗红黑树,好像我以后也是要学的 注意set是会自动排序的,但是你根本找不到每一个数的排名 因为,set没这个功能,开一个数组记录一下就好了 所以我们现在有这么几个函数 #include<bits/stdc++.h> using namespace std; #define re regi ...
分类:
其他好文 时间:
2021-06-28 18:30:07
阅读次数:
0
1、红黑树规则 a.节点颜色:黑色、红色 b.根节点是黑色,叶子NIL节点是黑色 c.如果一个节点是红色的,则它的子节点必须是黑色的。 d.从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。这样可以确保没有一条路径会比其他路径长出俩倍。因而,红黑树是相对是接近平衡的二叉树。 2、调整红黑 ...
分类:
其他好文 时间:
2021-06-20 18:20:41
阅读次数:
0
链表 数组并不是一个完美的数据结构,它容量固定,在有序数组中,增删数据麻烦而耗时。如果要记录的数据特点需要频繁的增删数据,又要快速查找数据,而且数据量又特别大的时候,数组就不再合适。当然,链表也不合适。针对这样的数据,可能使用散列表和红黑树是更合适的选择。 我其实只是想引出我要说的链表,但是搞砸了。 ...
分类:
编程语言 时间:
2021-06-13 10:49:00
阅读次数:
0
变态的面试题 前阵子发了一篇文,说了一下现在大厂对算法的重视,留言区很多人表示算法是一个过不去的坎。 其中的一个朋友就发来了他面试美团Android岗的面经: 他表示,其他的面试题目都答得还不错,面试官也很满意,但是这个手写红黑树把他难倒了,支支吾吾了半天也没有弄清楚,希望我能帮助他。 想着有这个问 ...
分类:
移动开发 时间:
2021-06-08 23:19:00
阅读次数:
0
什么是索引? 所谓的索引,就是帮助 MySQL 高效获取数据的排好序的数据结构。因此,根据索引的定义,构建索引其实就是数据排序的过程。 平时常见的索引数据结构有: 二叉树 红黑树 哈希表 B Tree 谈谈一个潜在的误区 我们首先需要澄清一点:MySQL 跟 B+ 树其实没有直接的关系,真正与 B+ ...
分类:
数据库 时间:
2021-06-02 12:11:17
阅读次数:
0
概述 本文是基于jdk8_271版本进行分析的。 Hashtable与HashMap一样,是一个存储key-value的双列集合。底层是基于数组+链表实现的,没有红黑树结构。Hashtable默认初始化容量为11,Hashtable也会动态扩容,与HashMap不同的是,每次扩容的容量是原容量2倍+ ...
分类:
编程语言 时间:
2021-06-02 10:43:44
阅读次数:
0
1. HashMap的底层实现原理 HashMap的底层:数组+链表 (jdk7及之前) 数组+链表+红黑树 (jdk 8)HashMap的底层实现原理?以jdk7为例说明: HashMap map = new HashMap(): 在实例化以后,底层创建了长度是16的一维数组Entry[] tab ...
分类:
其他好文 时间:
2021-06-02 10:34:15
阅读次数:
0
本文将分析put(),resize(),get()和remove()方法的源码 putval()方法 大致步骤:计算key的hash值;根据hash值计算数组下标;判断下标处是否有节点,无节点则直接插入,有则根据是链表还是红黑树进行对应操作。 这里需要注意的是如果插入链表后长度达到了8,且table ...
分类:
其他好文 时间:
2021-04-30 12:17:45
阅读次数:
0
splay、treap、set、红黑树、avl、B树 splay: 平衡二叉树,经过左旋和右旋操作,不会改变中序遍历的顺序。维护的是二叉树的一个中序序列,同时调整树的高度。 在插入和查询操作x的时候,都会把x变到树根的位置。 核心:每操作一个节点,均将该节点旋转到树根。一个点用到的话,之后的话很可能 ...
分类:
其他好文 时间:
2021-04-07 10:41:01
阅读次数:
0
JDK1.8中HashMap实现 JDK1.8中的HashMap实现跟JDK1.7中的实现有很大差别。下面分析JDK1.8中的实现,主要看put和get方法。 构造方法的时候并没有初始化,而是在第一次put的时候初始化 putVal方法的主要逻辑是这样的: 1、如果数组还没有初始化(数组长度是0), ...
分类:
其他好文 时间:
2021-03-30 12:53:22
阅读次数:
0