
java数据结构
文章平均质量分 64
emmmmsuperdan
这个作者很懒,什么都没留下…
展开
-
HashMap和ArrayMap SparseArray
ArrayMap结构:存放Entry键值对的数组结构; 而hashmap是数组+链表结构;arraymap和hashmap区别:查找效率:hashmap通过hashcode计算的index直接拿到值;而arraymap是通过二分法查找拿到值; 因此数据量大的时候用hashmap;构造源码:public class ArrayMap<K, V> extends AbstractMap<K, V> implements Map<K, V&...原创 2021-04-01 12:46:05 · 406 阅读 · 0 评论 -
位运算
负数补码:负数取反加11.判断奇偶x & 1==1 或者 x ^ 1 ==12.获取x的第n位值(x>>n)&13.把x最低位的1置为0x = x&(x-1)(因为x和x-1一定一个奇一个偶,最低位一定会被置0)4.拿到最低位的1x = -x&x (运用补码知识)5.仅将第n位置1x | (1<<n)6.仅将第n位置0x |(~(1<<n))...原创 2021-03-24 14:09:32 · 86 阅读 · 0 评论 -
动态规划之划分两个和相同的子集
题目描述:给一 只含有正整数的非空数组, 找到这个数组是否可以划分为 两个 元素和相等的子集。注意事项:所有数组元素不超过100.数组大小不超过200.样例:给一数组 [1, 5, 11, 5] , 返回 true ,两个子集:[1, 5, 5], [11]给一数组 [1, 2, 3, 9] , 返回 false 思路:首先判断元素总和,如果是奇数一定分不出; ...转载 2018-08-22 11:26:37 · 4657 阅读 · 0 评论 -
java浅拷贝和深拷贝
浅拷贝:如果说B是A拷贝出来的,改变B中的基本数据类型不会改变A中对应的基本数据类型;改变B中的引用数据类型会改变A中对应的引用数据类型(String除外,它的数据放在常量池,无法修改);深拷贝:...原创 2018-08-10 17:29:55 · 129 阅读 · 0 评论 -
数组和链表基本结构知识
数组操作的时间复杂度:查找,修改:O(1)增加,删除:O(n)链表操作的时间复杂度:查找,修改:O(n)增加,删除:O(1)原创 2018-08-08 21:42:42 · 1022 阅读 · 0 评论 -
冒泡排序以及改进方法
核心代码: 改进原创 2018-08-05 22:07:01 · 1641 阅读 · 1 评论 -
算法之大小顶堆初始化,插入,删除
创建大顶堆: 由给定的一个数组,对其中的元素进行大顶堆排序 从底部的叶子结点的根节点开始调整数组中的元素的位置创建小顶堆:类似于大顶堆的初始化3.大(小)顶堆的顶部元素的删除(不会改变数组的大小):****注意这里的删除指的是删除顶部元素,然后把堆的尾部元素调到顶部,重调整,最后把尾部元素置空(由于我用的是int型,...原创 2018-08-02 22:01:03 · 3188 阅读 · 0 评论 -
动态规划
0-1背包问题需要考虑优化条件,与找零钱类似,只是临界条件不同找零钱需要考虑优化的条件(即当手中的面值要比零钱少,即达到要求),才能进行下一步决策;走方格问题无需条件,直接进入下一步决策;1.0-1背包 标箭头的地方之所以用的是 i-1是因为它是从下标为1的地方开始循环的,所以i-1是当前的,而i则是下一步要到的下标。状态转移方程:dp(i,j) = Max(dp(i-...转载 2018-07-24 14:25:57 · 165 阅读 · 0 评论 -
回文字符串的判断,字符串中最大回文字符子串
回文字符串的判断: (https://blog.youkuaiyun.com/m0_37961948/article/details/72235216)字符串翻转,然后比较(又下面几种字符串翻转的方法) 从中间位置向两边比较 字符串翻转的方法: 栈的方法,了解一下就行了 字符串中最大字符子串...原创 2018-07-22 11:05:25 · 589 阅读 · 0 评论 -
快速排序算法以及八大算法的归纳
查找二叉树的时间复杂度logN,这种情况是最好的情况,即查找二叉树进化成平衡二叉树;红黑树的时间复杂度也是LogN; 1.快速排序:(参考博客https://blog.youkuaiyun.com/Yexiaofen/article/details/78018204代码在里面) 快速排序的最优(平均)时间复杂度计算:(每次的key都是正中间的那个数): 快速排序的最差...原创 2018-07-21 14:56:38 · 196 阅读 · 0 评论 -
KMP字符串匹配模式算法
主要看的是这两篇KMP博客: https://www.cnblogs.com/kingofkai/p/6178773.htmlhttps://blog.youkuaiyun.com/cdnight/article/details/11935387部分匹配值是前缀(一定要包含第一个字符)和后缀(一定要包含最后一个字符)的公共子串 j是失配位的前一位,是下面进行匹配的那一串匹配串(模式串)的...原创 2018-07-20 13:44:35 · 183 阅读 · 0 评论 -
java 算法
算法大全:https://www.cnblogs.com/CodingAndRiding/p/7618323.html 一. int m=Integer.parseInt(a,2);//将字符串转化成十进制整形,2表示原串表示的数是二进制 String n=Integer.toBinaryString(m);//将上面那个十进制数转化为二进制字符串形式 三. ...原创 2018-08-31 19:07:46 · 233 阅读 · 0 评论 -
数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点
遍历叉树函数都用根节点做形参,构建叉树或者还原叉树都用数组元素做形参;二叉树的性质: 1.第i层上,最多有2^(i-1)个结点; 2.深度为i的二叉树,这棵树最多有2^i -1个结点; 3.度为2的节点数n1,终端结点(树叶)数n0,关系为n0=n1+1;二叉树的表示方法:在看下面,当在特定的位置不存在子树,就会显示空;下面是重点:...原创 2018-08-31 19:07:22 · 577 阅读 · 0 评论 -
B树和B+树 红黑树
有关于B树的漫画博客:https://www.jianshu.com/p/8b653423c586;首先,B树的创建就是为了优化数据库查找,如果采用二叉查找树(时间复杂度只要LogN)来进行查找,那么在磁盘进行I/O操作时,(数据太大需要进行分页)每个磁盘页对应一个节点;最坏情况:查找次数等于输的高度(时间复杂度LogN),自顶向下查找10:需要4次那这样的话,通过将树变成矮树胖树...原创 2018-09-14 11:32:41 · 4342 阅读 · 0 评论 -
Collection集合,Map两种接口;Vector,LinkedList,ArrayList区别 堆栈;
归纳总结在这:https://blog.youkuaiyun.com/u014044812/article/details/48325307collection不能直接继承,只能通过继承它的子接口set List;如何遍历collection集合的元素?Iterator it = collection.iterator(); // 获得一个迭代子 while(it.hasNext())...原创 2017-10-12 15:31:59 · 282 阅读 · 1 评论 -
Hash算法和HashMap hashmap和hashtable的区别 fail-fast概念
重点是这:hashMap:https://blog.youkuaiyun.com/u012512634/article/details/72hash表:https://blog.youkuaiyun.com/xiaoxik/article/details/74926090hash算法:https://blog.youkuaiyun.com/sinat_31011315/article/details/78699655...原创 2018-08-09 09:38:06 · 806 阅读 · 1 评论 -
java 集合中List(ArrayList和LinkedList),set以及Map的实现
Map只能存放键值对,如果采用keyset这种方法去那key值,那么因为keyset是一个Set集合,输出将会是无序的;可以采用Pair集合存放键值对,采用这样key和value都能有序的输出;List(可加入null元素):首先List是一个接口,里面定义了很多抽象方法:ArrayList,LinkedList,Vector等等继承了它,说下ArrayList实现...原创 2018-09-01 09:42:46 · 6318 阅读 · 0 评论