![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 82
小乔不掉发
爱编程 爱生活
展开
-
HashMap 有的,我也有,HashMap做不到的,我能,我就是 ConcurrentHashMap
概念:高性能 并发的线程安全的 Map,基于安全失败的迭代器特性: 读操作(get),是没有加锁,基于 volatile 保证线程安全 - - - > 读读、读写并发提升效率:jdk1.7 和 1.8 都满足分段加锁(1.7是一段一段多个节点加锁,1.8是一个节点加锁)1、jdk 1.7:1、底层数据结构:数组 + 链表(HashEntry 为链表的结点)2、采取了 segment 分段锁技术,在多线程并发更新操作时,对同一个 segmen 进行同步加锁,保证数据的安全。这样就可原创 2021-04-25 09:29:05 · 137 阅读 · 0 评论 -
真的太重要了,面试出现的概率达到了 99%!!!对于哈希表的知识(建议收藏)
衣柜的容量是有限的,而衣服是无限的,总会出现哈希冲突的原创 2021-04-20 23:37:27 · 4318 阅读 · 8 评论 -
Map 和 Set 使用的区别和联系(建议收藏)
二叉搜索树:二叉树 && 每个节点中保存关键字(key) && 关键字需要具备比较的能力 && 每个节点遵守:左子树的所有 key < 其 key,右子树的所有 key > 其 key(所有节点都是 大于左子树,小于右子树)(二叉树搜索树中不会出现相等的 key)中序 : 1 2 3 4 5 6 7 8 9 10二叉搜索树的中序遍历一定是有序的...原创 2021-04-20 09:14:37 · 5213 阅读 · 1 评论 -
二叉搜索树的概念 及 功能代码实现
1、概念:二叉搜索树 又称 二叉排序树特点:二叉树 每个节点中保存关键字(key)(关键字需要具备 比较 的能力)每个节点 都是 大于左子树,小于右子树二叉树搜索树中 不会出现 相等的 key中序遍历 一定是 有序的时间复杂度:最好和平均:O(log(n)) 最坏:O(n)通过平衡树,解决搜索树最坏情况:二叉搜索树的平衡树(AVL树 + 红黑树)AVL树:前提是,二叉搜索树,要求 每个结点 的 左右子树高度差 的绝对值 不超过1AVL 的查找操作等同于普通搜索树的查找AVL原创 2021-04-19 22:34:16 · 244 阅读 · 0 评论 -
数据结构中的堆,一篇文章带你看懂他
数据结构中的堆:(heap)1、在一个集合的数据中,找出最大值(大堆)或者 最小值(小堆)堆 逻辑上是完全二叉树,实质上使用数组保存重要操作:向下调整:(前提:只有需要调整的位置不清楚,但其他位置已经满足堆的性质和了)小堆不一定是有序的,但有序一定是小堆...转载 2021-04-07 10:57:14 · 499 阅读 · 0 评论 -
二叉树的四种遍历 以及代码实现,看这一篇就够了
★ 前言:二叉树的遍历,是我们数据结构 重点中的重点 ,90% 的笔试题都是二叉树遍历的变形但是呢,有很多小伙伴对它的遍历方式还是有些模糊那么,接下来我就为大家详细介绍各种遍历方式的区别:二叉树的遍历:1、DFS(Depth First Search):深度优先遍历(1)前序遍历:(2)中序遍历:(3)后序遍历:2、BFS(Broadcast First Search):广度优先遍历(1)层次遍历:何为 遍历 :就是把二叉树中的每个结点,一个不落的都走一遍。。1、DFS(Depth First原创 2021-04-04 17:20:11 · 3352 阅读 · 2 评论 -
二叉树类型的常考选择题知识储备(二叉树的性质)
1、若规定 根节点的层数为 1,则 一个非空二叉树的 第 i 层 上最多有 2i-1 (i > 0)个结点2、若规定只有根节点的二叉树的深度为1,则 深度为 K 的二叉树的 最大结点数是 2k - 1(k >= 0)3、对于任意一个二叉树,如果其 叶子个数为 n0,度为 2 的非叶子结点个数为 n2 ,则有 n0 = n2 + 14、具有 n个结点的 完全二叉树 的 深度 k 为 log2n+1log_2^ {n+1}log2n+1 向上取整5、对于具有 n ..原创 2021-03-31 20:55:54 · 345 阅读 · 0 评论 -
关于 栈 和 队列,你还在犯迷糊吗?
栈 和 队列:队列:是一种线性结构,有一定的约束(只能从头尾插入和删除,并且遵循先进先出(FIFO)的规则)有两个接口:Queue:队列Deque:双向队列常见方法:返回类型方法解释booleanadd(E e)将指定元素插入到队列中;若违反容量限制,则抛出异常Eelement()检索,但不删除,这个队列的头Eremove()检索,并删除,此队列的头booleanoffer(E e)将指定的元素插入到此队列中Epeek()检原创 2021-03-31 17:04:34 · 237 阅读 · 0 评论 -
扑克牌小游戏,寻找 ♠A(来一场和赌王的争霸)
顺序表 实现一个扑克牌小游戏一副扑克牌(不含大小王) 52张基本游戏规则:1、洗牌(打乱牌的顺序)2、给五名玩家,各发两张牌 依次发牌3、判断最后 ♠A 在谁手里 谁获胜升级玩法:4、让每名玩家,依次抽取他的下家一张随机手牌。。。 然后再去找 ♠A5、因为周润发是赌神,所以他有变牌的能力: 他一旦手中没有黑桃A,就可以把第一张牌和有黑桃A的玩家互换(交换牌之前,有机会变一次;交换牌以后,有机会变一次)话不多说,直接上代码:首先我们新建两个类 玩家类 和 手牌类,用来定义我们玩游戏所原创 2020-10-25 13:01:45 · 2525 阅读 · 8 评论 -
面试题 - (单链表) (代码击败了100%的用户)(持续更新中)
出现在各大公司的 单链表 相关面试题:1、移除链表元素 (203)2、反转链表 (206)3、链表的中间结点 (876)4、链表中倒数第K个结点 (剑指 Offer 22)1、移除链表元素 (203)Leetcode 链接:https://leetcode-cn.com/problems/remove-linked-list-elements/问题描述: 删除链表中等于给定值 val 的所有节点。例如:输入: 1->2->6->3->4->5->6, val原创 2020-10-08 16:59:03 · 283 阅读 · 0 评论 -
线性表 :顺序表(ArrayList) 和 单链表(LinkedList) 详解
线性表:1、顺序表:2、单链表:(1) 单向 不带头 非循环链表线性表:(linear list)是n个具有 相同特性 的数据元素的 有限序列 。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串线性表在逻辑上是 线性结构 ,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以 数组 和 链式结构 的形式存储1、顺序表:(1)神马是顺序表:是用一段 物理地址连续 的存储单元依次存储数据元素的 线性结构(逻辑上也连续)一般原创 2020-10-07 23:32:09 · 1122 阅读 · 0 评论 -
何为 递归 ?
递归: 递 + 归 的操作将大问题化解成小问题的过程。为什么可以化解,是因为大问题的处理方式和小问题的处理方式是一样的。1、要调用自己本身;2、要有一个趋于终止的条件。下面以一个求阶乘的例子简单介绍一下:public class recursion { public static int fac(int n) { if(n == 1){ return 1; //终止条件 } return n * fac(n-1);原创 2020-09-27 14:54:33 · 210 阅读 · 0 评论