数据结构和算法
文章平均质量分 70
眼映星辰
It’s time to do something I need to do!
展开
-
算法题-N趟最低运载
该文源自便利蜂一面时的算法题,当时没能给出比较优雅的解法。事后复盘,并花时间对该题重新作答,在此记录下来。原创 2021-08-08 15:48:40 · 544 阅读 · 0 评论 -
大顶堆在Java中的一种优雅实现
既然小顶堆已经实现出来,那么同理大顶堆也顺理成章实现出来,只需稍微改动几个关键部门的代码。/** * 大顶堆/最大堆实现 * * @author stephenshen * */public class MaxHeap { // 堆得存储结构:数组 private int[] data; /** * 构造方法:传入一个数组,并转换为一个最大堆 * * @p...原创 2018-10-09 21:14:38 · 1161 阅读 · 0 评论 -
二叉树理论基础
1. 二叉树的定义二叉树是每个节点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。 2. 二叉树的性质二叉树有以下几个性质:TODO(上标和下标)性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)。性质3:包含n个结点的二叉树的高度至少为log...转载 2018-10-11 22:47:16 · 718 阅读 · 0 评论 -
二叉搜索树java实现
1. 二叉搜索树节点的定义public class BSTree<T extends Comparable<T>> { private BSTNode<T> mRoot; // 根结点 public class BSTNode<T extends Comparable<T>> { T key...原创 2018-10-11 23:31:08 · 331 阅读 · 0 评论 -
小顶堆在Java中的一种优雅实现
今天探索TopK问题的时候取得的阶段性成果,记录下来以供翻阅。/** * 小顶堆/最小堆实现 * * @author stephenshen * */public class MinHeap { // 堆得存储结构:数组 private int[] data; /** * 构造方法:传入一个数组,并转换为一个最小堆 * * @param data *...原创 2018-10-09 11:27:36 · 2947 阅读 · 1 评论 -
海量数据中的TopK问题
1. 抛出问题 在大规模数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题。例如,在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载最高的前10首歌等。 针对top K类问题,通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到的最小堆),即先将...原创 2018-10-09 22:38:02 · 1556 阅读 · 0 评论 -
算法之大数相加
上周五去头条面试的时候,面试官给了道大数相加的题,觉得还是有些意思的,不敢私藏,拿出来给大伙品鉴品鉴。1.问题科学计算中往往需要很大的数字,我们可以使用如下的单链表结构来表示大数(整型),每个节点存储0-9的整数class Node{ Node next; int value;}如: 5274 可以表示为 5-&gt;2-&gt;7-&gt;4问:如何实现大数的运算,比如大数相...原创 2018-12-03 20:42:44 · 737 阅读 · 0 评论