随笔分类 - 数据结构
数据结构
摘要:package com.hhy;import java.util.LinkedList; import java.util.Queue; import java.util.Stack; /** * @Information: * @Author: HeHaoYuan * @Date: Created
阅读全文
摘要:优先队列priorityQueue是Queue接口的实现,可以对其中元素进行排序,可以放基本的包装类型或自定义的类,对于基本类型的包装类,优先队列中元素的默认排列顺序是升序,但是对于自定义类来说,需要自定义比较类 priorityQueue的内部实现PriorityQueue对元素采用的是堆排序,头
阅读全文
摘要:区别: 1) 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。 2) 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下: 先
阅读全文
摘要:假设循环队列最多能容纳k个整型数字,那么我们需要开辟k+1个空间,如图,当k = 6的时候,空间大小为7,即array.length() = 7.在起始的时候,front = rear = 0;在每次添加数字的时候( enqueue() ),rear都会+1,而k = 6,也就是从初始位置rear
阅读全文
摘要:class Node{ E data; Node next = null; public Node(E data){ this.data = data; } } class ListStack{ Node top = null; public boolean empty(){ return top == null;...
阅读全文
摘要:题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度
阅读全文
摘要:关于HashMap的数据结构:采用散列表的数据结构,链表+数组,数组Array,所存储的元素并非基本数据类型,而是Entry(内含键值对),包括的数据域(键,值,next), 其计算方法: key.hashcode()%Array[].length HashMap虽然是一个很好用的集合,但是而有一个
阅读全文
摘要:题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则 按照递归来做:
阅读全文
摘要:github:https://github.com/hehaoyuan/Data-Structure/blob/master/%E5%A4%A7%E6%A0%B9%E5%A0%86.java
阅读全文
摘要:哈希表(k,v)数组,根据相应的哈希算法计算key的下标,返回值就是v存储的数组下标哈希算法:f(K) -> int即为v需要存储的数组下标哈希算法:%16查找,添加元素:O(1)哈希冲突解决办法:哈希算法计算的两个不同对象的哈希值相等的情况eg:1%16==17%16a、开放定址法寻找下一个为nu
阅读全文
摘要:https://github.com/hehaoyuan/Data-Structure/tree/master/%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97
阅读全文
摘要:LinkedList、ArrayList、Vector三者的关系与区别? 区分ArrayList,Vector,LinkedList的区别 ArrayList,Vector的区别: 1.出现版本:ArrayList(1.2),Vector(1.0),Collection(1.2),也就是说Vecto
阅读全文
摘要:HashMap源码解析(负载因子,树化策略,内部hash实现,resize策略) 内部属性: HashMap也采用懒加载策略,第一次put时初始化哈希表。树化逻辑:索引下标对应的链表长度达到阈值8并且当前哈希表长度达到64才会树化,否则只是调用resize方法进行哈希表扩容。
阅读全文
摘要:在Java中将数组转为集合,会用到Arrays.asList()的方法,然而,这个方法却与我们的预期期望存在一些出入,当用到asList方法将数组转化成List列表时,对得到的List列表进行add()和remove()操作, JVM会抛出异常:java.lang.UnsupportedOperat
阅读全文
摘要:复杂度分析:衡量一个算法的优劣时间:大O时间复杂度分析法:如何一眼看上去就能知道一段代码的复杂度一个算法和一段代码的执行时间和代码行数成正比n--代码行数O--表示代码对函数f(n)成正向趋势T(n)=O(f(n));分析方法:1.只需要关注循环量最多的一点代码 2.加法原则:总复杂度等于量级最高的
阅读全文

浙公网安备 33010602011771号