随笔分类 - 数据结构和算法
数据结构和算法
摘要:一、判断二叉树是否对称 给定一棵二叉树,判断它是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的 1 / \ 2 2 / \ / \3 4 4 3下面这棵二叉树不对称。 1 / \ 2 2 \ \ 3 3备注:希望你可以用递归和迭代两种方法解决这个问题 二、示例 输入:{1,2,2} 输出
阅读全文
摘要:回文数定义 设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。 例如,若n=1234321,则称n为一回文数,同理,124421也是回文数。 算法: //是否是回文数 12321 true; 12344 false;1、常见的判断一个数为回文数的算法一般需要把一个
阅读全文
摘要:题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 假设数组中不存在重复的元素。算法时间复杂度必须是 O(log
阅读全文
摘要:同 HashMap 一样,LinkedHashMap 也是对 Map 接口的一种基于链表和哈希表的实现。实际上, LinkedHashMap 是 HashMap 的子类,其扩展了 HashMap 增加了双向链表的实现。相较于 HashMap 的迭代器中混乱的访问顺序,LinkedHashMap 可以
阅读全文
摘要:二叉树的层次遍历 层次遍历,就是从上到下一层一层的遍历 。其实主要就是要借助一个队列的先进先出,去遍历例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 代码实现
阅读全文
摘要:①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法
阅读全文
摘要:一. LruCache基本原理 LRU全称为Least Recently Used,即最近最少使用。由于缓存容量是有限的,当有新的数据需要加入缓存,但缓存的空闲空间不足的时候,如何移除原有的部分数据从而释放空间用来存放新的数据。 LRU算法就是当缓存空间满了的时候,将最近最少使用的数据从缓存空间中删
阅读全文
摘要:B-树 B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树 它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图. B-树有如下特点: 所有键值分布在整颗树中; 任何一个关键字出现且只出现在一个结点中; 搜索有可能在非叶子
阅读全文
摘要:具体讲解之前,有一点,再次强调下:B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种一种树。而事实上是,B-tree就是指的B树。特此说明。 一、B树 B树(B
阅读全文
摘要:PriorityQueue其实是一个优先队列,和先进先出(FIFO)的队列的区别在于,优先队列每次出队的元素都是优先级最高的元素。那么怎么确定哪一个元素的优先级最高呢,jdk中使用堆这么一种数据结构,通过堆使得每次出队的元素总是队列里面最小的,而元素的大小比较方法可以由用户Comparator指定,
阅读全文
摘要:今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍。本来以为花不了多少时间的,不过最终还是投入了挺多时间来完成这篇文章的。 网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇
阅读全文
摘要:从上面的代码可以看到key的hash值的计算方法。key的hash值高16位不变,低16位与高16位异或作为key的最终hash值。(h >>> 16,表示无符号右移16位,高位补0,任何数跟0异或都是其本身,因此key的hash值高16位不变。) 为什么要这么干呢? 这个与HashMap中tabl
阅读全文
摘要:哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行
阅读全文
摘要:描述: 给定一个字符串,找到最长子串的长度,而不重复字符。 例子: 给定"abcabcbb"的答案是"abc",长度是3。 给定"bbbbb"的答案是"b",长度为1。 给定"pwwkew"的答案是"wke",长度为3.请注意,答案必须是子字符串,"pwke"是子序列,而不是子字符串。 我的方法:(
阅读全文
摘要:KMP算法应该是每一本《数据结构》书都会讲的,算是知名度最高的算法之一了,但很可惜,我大二那年压根就没看懂过~~~ 之后也在很多地方也都经常看到讲解KMP算法的文章,看久了好像也知道是怎么一回事,但总感觉有些地方自己还是没有完全懂明白。这两天花了点时间总结一下,有点小体会,我希望可以通过我自己的语言
阅读全文
摘要:问题: A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null. Return a deep
阅读全文

浙公网安备 33010602011771号