
数据结构
miao-hu
这个作者很懒,什么都没留下…
展开
-
面试官【谈谈你所理解的 TopK 问题】
在实际工作中,经常会遇到在海量数据中找出前K个最值的问题。对于此类问题,可能我们一般想到的算法是排序算法,首先给数据进行排序,再去获取k个最值轻而易举。但是当问题的规模内存中放不下时,普通的内排序就无法进行。对于海量数据的topk问题,一种常用的做法是借助堆解决。 1.原理 如果需要获取最大的k个值,可以建小堆。否则,建大堆。我们以获取k个最大值为例,进行原理说明。 首先读入前k个数据存入一个最小堆。 然后遍历后续的数据,对于每一个遍历的数据,都和堆顶(k个数据中最小的)数据比较,如果比堆顶数据小,则继续原创 2020-07-19 10:50:18 · 394 阅读 · 0 评论 -
腾讯经典考题《编写代码求最大连续子序列》
1.什么是最大连续子序列? 最大连续子序列问题是一个非常经典的问题,需要求解出一个数组中的最大连续子序列的和。比如数组{6, -3, -2, 7, -15, 1, 2, 2},它的最大连续子序列为{6,-3,-2,7},和为8。 2.解题思路 (1)暴力搜索 最大连续子序列的和只可能从数组0到n-1中某个位置开始,我们可以遍历0到n-1个位置,计算由这个位置开始的所有连续子序列中的和的最大值,最终求出全局最大值即可。更详细的讲,就是计算从位置0开始的最大连续子序列的和,从位置1开始的最大连续子序列的和…。直原创 2020-07-12 22:16:30 · 269 阅读 · 0 评论 -
面试再也不怕被问 HashMap 了
具体问题如下: 1.HashMap的内部数据结构 数组 + 链表/红黑树 2.HashMap允许空键空值么 HashMap最多只允许一个键为Null(多条会覆盖),但允许多个值为Null 3.影响HashMap性能的重要参数 初始容量:创建哈希表时桶的数量(数组的大小),默认为 16 负载因子:哈希表在其容量扩容之前可以达到一种尺度,默认为 0.75 4.HashMap的工作原理 HashMap是基于hashing的原理,我们使用put(key, value)存储对象到HashMap中,使用get(ke原创 2020-06-30 09:54:55 · 407 阅读 · 1 评论 -
浅析 AVL 树,红黑树,B 树,B+ 树
一. AVL 树 1.出现的原因 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序,二叉搜索树将有可能退化为单支树,此时查找元素相当于在顺序表中查找元素,效率低下,相当于O(n)。 例如:对于同一个关键码集合,如果各关键码插入的次序不同,可能得到不同结构的二叉搜索树: 最优情况下,二叉搜索树为完全二叉树。 最差情况下,二叉搜索树退化为单支树。 2.定义 AVL 树是一种二叉平衡搜索树,...原创 2020-04-05 12:18:05 · 712 阅读 · 0 评论 -
二叉树的前,中,后序及中序遍历(还有其它变形算法题)
1.前序遍历 public static void preOrderTraversal(Node root){ if(root==null){ return; } // 根 + 左子树的前序遍历 + 右子树的前序遍历 System.out.print(root.val+" "); preOr...原创 2020-03-06 21:26:17 · 210 阅读 · 0 评论