上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 36 下一页
摘要: 二分搜索树最大的问题是,在存储有序的数组时会退化成链表,性能大大降低。需要在现有二分搜索树的基础上添加一些机制,使得其能维持平衡二叉树 而AVL树是最早的自平衡二分搜索树,可以自动平衡的分布节点,避免退化成链表 平衡二叉树 完全二叉树、满二叉树都是平衡二叉树,其所有叶子节点的高度相差不超过1,平衡度 阅读全文
posted @ 2021-11-14 23:05 振袖秋枫问红叶 阅读(51) 评论(0) 推荐(0)
摘要: 并查集,又称Union Find,和之前的树结构不同,并查集的指针由孩子指向父亲 常用于解决连接问题,比如网络中节点间的连接状态 对一组数据,并查集主要支持合并和查询两个动作,unionElement(p, q)和isConnected(q, p) 数组实现并查集(Quick Find) 效率低,不 阅读全文
posted @ 2021-11-12 16:48 振袖秋枫问红叶 阅读(60) 评论(0) 推荐(0)
摘要: Trie,又称字典树、前缀树,是一种N叉树 Trie是一种专门为字典设计的数据结构,通常只用来处理字符串;而之前的Map更适合称为映射而不是字典,因为其存储的对象不一定是字符串 如果用TreeMap和Trie来查询字符串,TreeMap的时间复杂度为O(logn),而Trie的时间复杂度和总数n无关 阅读全文
posted @ 2021-11-12 14:02 振袖秋枫问红叶 阅读(128) 评论(0) 推荐(0)
摘要: import java.util.TreeMap; class MapSum { /** * 本题中每个节点还有一个对应的val,可以替代isWord的作用 */ class Node{ int val; TreeMap<Character, Node> next; public Node(int 阅读全文
posted @ 2021-11-11 13:53 振袖秋枫问红叶 阅读(39) 评论(0) 推荐(0)
摘要: import java.util.TreeMap; class WordDictionary { class Node{ boolean isWord; TreeMap<Character, Node> next; public Node(){ isWord = false; next = new 阅读全文
posted @ 2021-11-11 10:32 振袖秋枫问红叶 阅读(34) 评论(0) 推荐(0)
摘要: import java.util.TreeMap; class Trie { class Node{ boolean isWord; TreeMap<Character, Node> next; public Node(){ next = new TreeMap<>(); isWord = fals 阅读全文
posted @ 2021-11-10 20:16 振袖秋枫问红叶 阅读(24) 评论(0) 推荐(0)
摘要: 对于有一类问题,我们关心的是一个线段(区间),比如区间染色、区间查询 对于一个给定的区间,更新区间中一个元素的值或者查询区间中的最大最小值或者总和,使用线段树更快,又称区间树 线段树是一种平衡二叉树(最大深度和最小深度差值<=1,堆也是平衡二叉树),其节点存储的是一个区间的信息,比如该区间的总和,根 阅读全文
posted @ 2021-11-10 15:45 振袖秋枫问红叶 阅读(90) 评论(0) 推荐(0)
摘要: import java.util.TreeMap; class MyCalendar { TreeMap<Integer, Integer> treeMap; public MyCalendar() { treeMap = new TreeMap(); } public boolean book(i 阅读全文
posted @ 2021-11-10 15:41 振袖秋枫问红叶 阅读(57) 评论(0) 推荐(0)
摘要: class NumArray { SegmentTree segmentTree; public NumArray(int[] nums) { segmentTree = new SegmentTree(nums); } public void update(int index, int val) 阅读全文
posted @ 2021-11-10 14:27 振袖秋枫问红叶 阅读(29) 评论(0) 推荐(0)
摘要: /** * 对于不可变数组,用线段树反而更麻烦 */ class NumArray { int[] sum; public NumArray(int[] nums) { /** * 提前保存前n个元素的和,sum[i]保存的是前i个元素,不包括自身 * 区间和就是左右边界前缀和的差 */ sum = 阅读全文
posted @ 2021-11-10 13:52 振袖秋枫问红叶 阅读(30) 评论(0) 推荐(0)
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 36 下一页