随笔分类 - Data Structure-数据结构算法
包含 矩阵算法:Matrix Multiplication,二叉树
摘要:今天在处理生成excel的时候用到了java的list,但是需要直接赋值固定的几个变量,如果先初始化然后add的方法: List<String> name = new ArrayList(); name.add("xxx"); name.add("yyy"); name.add("zzz"); 这样
阅读全文
摘要:mysql的B+树索引 查找使用了二分查找,redis 跳表也使用了二分查找法,kafka查询消息日志也使用了二分查找法,二分查找法时间复杂度O(logn); 参考:redis的索引底层的 跳表原理 实现 聊聊Mysql索引和redis跳表 redis的跳表原理 时间复杂度O(logn)(阿里) 参
阅读全文
摘要:1.二叉树前序遍历的非递归实现 * 实现思路,先序遍历是要先访问根节点,然后再去访问左子树以及右子树,这明显是递归定义,但这里是用栈来实现的 * 首先需要先从栈顶取出节点,然后访问该节点,如果该节点不为空,则访问该节点,同时把该节点的右子树先入栈,然后 * 左子树入栈。循环结束的条件是栈中不在有节点
阅读全文
摘要:链表的翻转是程序员面试中出现频度最高的问题之一,去百度面试问了我这个问题,回来做了总结 常见的解决方法分为递归和迭代两种。最近在复习的时候,发现网上的资料都只告诉了怎么做,但是根本没有好好介绍两种方法的实现过程与原理。所以我觉得有必要好好的整理一篇博文,来帮忙大家一步步理解其中的实现细节。 我们知道
阅读全文
摘要:红黑树插入删除 具体参考:红黑树原理以及插入、删除算法 附图例说明 (阿里的高德一直追着问) 或者插入的情况参考:红黑树原理以及插入、删除算法 附图例说明 红黑树与AVL树 红黑树 的时间复杂度 O(logn) TreeMap TreeSet本身就是一个红黑树的实现。 “红黑树”,它一种特殊的二叉查
阅读全文
摘要:数据结构中有很多种类的树结构,例如,普通二叉树、完全二叉树、满二叉树、线索二叉树、哈夫曼树、二叉搜索树(排序树)、平衡二叉树、AVL平衡二叉树、红黑树、B树、B+树、堆 1、普通二叉树、完全二叉树、满二叉树 二叉树:最多有两棵子树的树被称为二叉树 满二叉树:二叉树中所有非叶子结点的度都是2,且叶子结
阅读全文
摘要:hashmap的扩容因子是0.75 原因 参考:HashMap默认加载因子为什么选择0.75?(阿里) 1. HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
阅读全文
摘要:hashmap的扩容因子是0.75 原因 参考:HashMap默认加载因子为什么选择0.75?(阿里) Hashtable 是一个很常见的数据结构类型,前段时间阿里的面试官说只要搞懂了HashTable,hashMap,HashSet,treeMap,treeSet这几个数据结构,阿里的数据结构面试
阅读全文
摘要:hashmap的扩容因子是0.75 原因 参考:HashMap默认加载因子为什么选择0.75?(阿里) 阿里的人问 数组的时间复杂度是多少,链表的是多少,hashmap的时间复杂度是多少。。。。。 后来才知道,时间复杂度是要区分 增删改查的。。。。主要看查询的时间复杂度; 1、数组 查询的时间复杂度
阅读全文
摘要:hashmap的扩容因子是0.75 原因 参考:HashMap默认加载因子为什么选择0.75?(阿里) HashMap专题:HashMap的实现原理--链表散列 HashTable专题:Hashtable数据存储结构-遍历规则,Hash类型的复杂度为啥都是O(1)-源码分析 hashmap的扩容因子
阅读全文
摘要:hashmap的扩容因子是0.75 原因 参考:HashMap默认加载因子为什么选择0.75?(阿里) ConcurrentHashMap 与HashMap和Hashtable 最大的不同在于:put和 get 两次Hash到达指定的HashEntry,第一次hash到达Segment,第二次到达S
阅读全文
摘要:某天参加阿里面试,技术面的时候,面试官问了排序问题: 问题一:若有1T的数据,比如 只有两列,身份证号和姓名 需要实现由大到小排序,你用什么办法,能否做到 复杂度为O(n),说说你的思路和想法? 问题二:有10个G的数据,也是一样,比如两列,身份证号和姓名,如果两条数据一样,则表示该两条数据重复了,
阅读全文
摘要:学习过了二叉查找树,想必大家有遇到一个问题。例如,将一个数组{1,2,3,4}依次插入树的时候,形成了图1的情况。有建立树与没建立树对于数据的增删查改已经没有了任何帮助,反而增添了维护的成本。而只有建立的树如图2,才能够最大地体现二叉树的优点。 在上述的例子中,图2就是一棵平衡二叉树。科学家们提出平
阅读全文
摘要:今天阿里的人问我 equals 与hashcode的区别,我答不上来, 仔细查了一下,做了总结: (1) == 这是Java 比较内存地址,就是内存中的对象; java中的==是比较两个对象在JVM中的地址。比较好理解。看下面的代码: 上述代码中: (1)s1 == s2为true,是因为s1和s2
阅读全文
摘要:关于java中的Queue,经常用到,做个总结 Queue是一种很常见的数据结构类型,在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。 实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现。还有的适用于多线程的环境。java中具有Queue功能
阅读全文
摘要:数据结构中一直对二叉树不是很了解,今天趁着这个时间整理一下 许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或
阅读全文
摘要:Set(集) 实现类主要有HashSet和TreeSet List(列表) 实现类主要有ArrayList,LinkedList,Vector Map(映射)实现类主要有HashMap和TreeMap,HashTable 线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。
阅读全文
摘要:矩阵乘法是一种高效的算法可以把一些一维递推优化到log( n ),还可以求路径方案等,所以更是是一种应用性极强的算法。矩阵,是线性代数中的基本概念之一。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。矩阵乘法看起来很奇
阅读全文
摘要:直接上代码 单链表Linux读文件排序: 双链表Linux读取文件排序: 二叉树LinuX读取文件并排序:
阅读全文
摘要:二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加。但是他也有自己的缺点:删除操作复杂。 虽然二叉排序树的最坏效率是O(n),但它支持动态查找,且有很多改进版的二叉排序树可以使树高为O(logn),如AVL、红黑树等。 对于排序二叉树
阅读全文