![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
lippon
Think Different.
展开
-
数据结构——霍夫曼树及题目场景应用
什么是霍夫曼树霍夫曼树是二叉树的一种特殊形式,又称为最优二叉树,其主要作用在于数据压缩和编码长度的优化。给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为霍夫曼树(Huffman Tree)。霍夫曼树的构造思路若要使得带权外路径长度最小,可以将权值大的节点尽量靠近根节点,这样路径短一些;而权值小的节点可以适当远离根节点,因为权值小,外路径稍微长一点也没事。应用场景霍夫曼编码霍夫曼编码是一种基于最小冗余编码的压缩算法。最小冗余编码是指,如原创 2020-11-16 16:01:40 · 804 阅读 · 0 评论 -
数据结构——树状数组(区间更新、求和问题)
假设你正在读取一串整数。每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。请实现数据结构和算法来支持这些操作,也就是说:实现 track(int x) 方法,每读入一个数字都会调用该方法;实现 getRankOfNumber(int x) 方法,返回小于或等于 x 的值的个数。leetcode解题思路:这是一道树状数组地模版题。什么是树状数组呢?就是将数组元素信息整合在一些关键节点上,这样,需要获取某些信息的时候,就不需要去遍历每一个节点,只需要去检索这些关键的节点,就.原创 2020-11-12 15:06:58 · 217 阅读 · 0 评论 -
数据结构—— Trie (前缀树)
实现一个 Trie (前缀树),包含 插入, 查询, 和 查询前缀这三个操作。Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 falsetrie.startsWith(“app”); // 返回 truetrie.insert(“app”);trie.search(“app”); // 返回 true思路:构造一个.原创 2020-10-28 21:03:33 · 98 阅读 · 0 评论 -
数据结构——双向链表
普通链表的节点由节点值和指向下一个节点的指针组成。双向链表顾名思义,节点中多一个指针可以指向前一个节点。优点:可以得到前节点,这样在只有当前节点的情况下,可以删除本节点。class Node { public int val; public Node next, prev; public Node(int v) { this.val = v; }}class DoubleList { private Node head, tail; //原创 2020-10-26 15:26:25 · 265 阅读 · 0 评论