随笔分类 -  Data Structure-数据结构算法

包含 矩阵算法:Matrix Multiplication,二叉树
摘要:具体的图文讲解参考:链表翻转的图文讲解(递归与迭代两种实现)(百度面试) 如题: 定义一个方法(函数),实现输入一个链表的头结点,然后可以反转这个链表的方向,并输出反转之后的链表的头结点。 代码实现 解题思路: 从表头节点依次遍历,将当前节点的后继指针指向它的前驱节点即可;此时需要prev、next 阅读全文
posted @ 2022-04-20 12:29 aspirant 阅读(235) 评论(0) 推荐(0) 编辑
摘要:具体的红黑树介绍参考:红黑树原理以及插入、删除算法 附图例说明 红黑树 查找算法:遍历、二分(有序序列,二叉查找树 2^x=n树高=lgn,O(lgn))、哈希(最高效)、插值(二分的优化)、索引(搜索引擎、lucene)、BFS/DFS(图论的遍历)、平衡树、B树、B+树、红黑树(高效的查找算法) 阅读全文
posted @ 2022-04-15 15:33 aspirant 阅读(774) 评论(0) 推荐(0) 编辑
摘要:以HashMap为例,它不安全,什么叫不安全。简单理解就是多线程读写可能是脏数据,比如你在A线程读,B线程写了一个新数据,而A线程却不知道。可怕。。之前有一个奔溃是java.util.ConcurrentModificationException,就是线程不安全的操作,不过更专业的说法是快速失败。H 阅读全文
posted @ 2021-12-20 11:41 aspirant 阅读(278) 评论(0) 推荐(0) 编辑
摘要:位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。 1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1, 阅读全文
posted @ 2021-07-19 20:22 aspirant 阅读(652) 评论(0) 推荐(0) 编辑
摘要:需求是这样的,我希望使用一个字段来标记多个boolean属性, 不能使用json的形式,因为使用opensearch 不能通过json解析,但是可以使用位操作运算符号, 如果不熟悉位运算符号参考:Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^) 网上参考了很多,发现 明明是个小 阅读全文
posted @ 2021-07-19 16:16 aspirant 阅读(381) 评论(0) 推荐(0) 编辑
摘要:一、概念 R-B Tree,全称是Red-Black Tree又称红黑树,它是一种特殊的二叉查找树,红黑树的每个节点上都有存储位表示节点的颜色,可以是红或黑。 二、特性 1、每个节点或者是红色,或者是黑色 2、根节点是黑色的 3、每个叶子节点(NIL)是黑色的。注意:这里的叶子节点,是指为空的叶子节 阅读全文
posted @ 2019-10-22 08:59 aspirant 阅读(3930) 评论(1) 推荐(0) 编辑
摘要:今天遇到一个问题,是要从1-100中找到缺失的数字,而且是杂序排列,开始的时候确实有点懵,怎么弄啊,后来看了别人的idea,自己动手做了一下,在这里做个记录,大家有更好的意见,请回复啊 参考:怎样查出连续数字中缺失的数字 阅读全文
posted @ 2019-10-12 19:58 aspirant 阅读(1547) 评论(1) 推荐(0) 编辑
摘要:原题如下: 有一个100G大小的文件里存的全是数字,并且每个数字见用逗号隔开。现在在这一大堆数字中找出100个最大的数出来。 我认为,首先要摸清考官的意图。是想问你os方面的知识,还是算法,或者数据结构。 如果是os: 无疑是外排序算法的选择。100g文件在当前的环境下是无法全部读入内存的。 如果是 阅读全文
posted @ 2019-09-30 16:42 aspirant 阅读(1828) 评论(4) 推荐(0) 编辑
摘要:线程不安全的问题:hashMap 的多线程安全问题- ConcurrentModificationException 多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成 阅读全文
posted @ 2019-09-11 09:21 aspirant 阅读(4736) 评论(0) 推荐(0) 编辑
摘要:redis使用跳表不用B+数的原因是:redis是内存数据库,而B+树纯粹是为了mysql这种IO数据库准备的。B+树的每个节点的数量都是一个mysql分区页的大小(阿里面试) 还有个几个姊妹篇:介绍mysql的B+索引原理 参考:一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试) 阅读全文
posted @ 2019-09-06 15:57 aspirant 阅读(15802) 评论(5) 推荐(14) 编辑
摘要:二分查找法的时间复杂度:O(logn) redis,kafka,B+树的底层都采用了二分查找法 参考:二分查找法 redis的索引底层的 跳表原理 实现 聊聊Mysql索引和redis跳表 redis的跳表原理 时间复杂度O(logn)(阿里) 参考:二分查找法 kafka如何实现高并发存储-如何找 阅读全文
posted @ 2019-09-06 09:12 aspirant 阅读(5873) 评论(0) 推荐(0) 编辑
摘要:Hashtable 初始容量是11 ,扩容 方式为2N+1; HashMap 初始容量是16,扩容方式为2N; 阿里的人突然问我为啥扩容因子是0.75,回来总结了一下; 提高空间利用率和 减少查询成本的折中,主要是泊松分布,0.75的话碰撞最小, HashMap有两个参数影响其性能:初始容量和加载因 阅读全文
posted @ 2019-09-06 08:58 aspirant 阅读(35957) 评论(5) 推荐(11) 编辑
摘要:1、多线程put操作后,get操作导致死循环。2、多线程put非NULL元素后,get操作得到NULL值。3、多线程put操作,导致元素丢失。 参考:多线程下HashMap的死循环问题 比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成: 1、多线程put操作后,get操作 阅读全文
posted @ 2019-09-03 07:49 aspirant 阅读(5745) 评论(0) 推荐(3) 编辑
摘要:从源码可以看出,Iterator除了能读取集合的数据之外,也能数据进行删除操作;而Enumeration只能读取集合的数据,而不能对数据进行修改。 Iterator支持fail-fast机制,而Enumeration不支持fail-fast机制。Enumeration 是JDK 1.0添加的接口。使 阅读全文
posted @ 2019-04-24 16:50 aspirant 阅读(1131) 评论(0) 推荐(0) 编辑
摘要:网易2017实习生招聘笔试题-Java开发工程师 有10000000条数据,用以下什么排序算法用时最短 A 堆排序 B 快速排序 C 希尔排序 D 归并排序 个人参考答案 A 堆排序 数据量为千万,设每个数据为整型int,即4字节,4000 0000字节约也就38Mb,暂时不用考虑内存问题即外排序( 阅读全文
posted @ 2019-03-08 17:42 aspirant 阅读(1065) 评论(0) 推荐(0) 编辑
摘要:事实上Collections.sort方法底层就是调用的Arrays.sort方法,而Arrays.sort使用了两种排序方法,快速排序和优化的归并排序。 快速排序主要是对那些基本类型数据(int,short,long等)排序, 而归并排序用于对Object类型进行排序。 使用不同类型的排序算法主要 阅读全文
posted @ 2019-03-08 17:33 aspirant 阅读(3839) 评论(0) 推荐(0) 编辑
摘要:参考:Java集合和数组的区别 集合和容器都是Java中的容器。 区别 数组特点:大小固定,只能存储相同数据类型的数据 集合特点:大小可动态扩展,可以存储各种类型的数据 转换 数组转换为集合: Arrays.asList(数组) 示例: 1 2 3 4 5 int[] arr = {1,3,4,6, 阅读全文
posted @ 2019-02-18 16:17 aspirant 阅读(8726) 评论(0) 推荐(2) 编辑
摘要:一、有序集合求交集的方法有 a)二重for循环法,时间复杂度O(n*n) b)拉链法,时间复杂度O(n) c)水平分桶,多线程并行 d)bitmap,大大提高运算并行度,时间复杂度O(n) e)跳表,时间复杂度为O(log(n)) 以下是方法的具体介绍: 方案一:for * for,土办法,时间复杂 阅读全文
posted @ 2018-11-24 17:41 aspirant 阅读(3967) 评论(1) 推荐(1) 编辑

点击右上角即可分享
微信分享提示