字符串哈希 字符串哈希字符串哈希函数$$Hash(s) = (\sum_{i = 1}^{n}{c_i * base^{n - i})}\quad mod \quad p)$$ 字符串s任意字串的哈希值$$Hash(s_{l, r}) = (a[r] - a[l - 1] * base^{r - l + 1}\quad mod \quad p)$$ 代码实现12345678910 2024-02-27 算法 #Algorithm
二叉树 二叉树二叉树的数据结构1234567struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(): val(0), left(NULL), right(NULL) {}; TreeNode(int x): val(x), left(NULL), right(N 2024-02-26 算法 #Algorithm
Activity ActivityActivity生命周期 Activity状态运行状态当一个Activity位于返回栈的栈顶时,Activity就处于运行状态 暂停状态当一个Activity不再处于栈顶位置,但仍然可见时,Activity就进入了暂停状态,比如对话框形式的Activity。只有在内存极低时,系统才会去考虑回收这种Activity 停止状态当一个Activity不再处于栈顶状态,并且完全不可见时,就 2023-08-13 Android #Android
Splay Splay伸展树是一种平衡二叉查找树,它通过伸展操作不断将某个节点旋转到根节点,使得整棵树仍然满足二叉查找树的性质,能够在均摊O(logN)时间内完成插入、查找和删除操作,并且保持平衡而不至于退化为链 定义伸展树的基本想法是:当一个节点被访问后,它就要经过一系列AVL树的旋转被放到根上。如果一个节点很深,那么其路径上就存在许多的节点也相对较深,通过构造可以使所有这些节点的进一步访问所花费的时间较少 2023-05-21 算法 #Algorithm
BST BST性质对于树中的每个节点X,它的左子树中所有关键字值小于X的关键字值,同时右子树中所有关键字值大于X的关键字值。这意味着树中所有的元素可以用某种统一的方式排序。 结构123456struct TreeNode { struct TreeNode* left; struct TreeNode* right; int value;}typedef struct 2023-05-21 算法 #Algorithm
AVL树 AVLAVL树是带有平衡条件的二叉查找树,每个节点的左子树和右子树的高度最多差1。 结构1234567struct TreeNode { struct TreeNode* left; struct TreeNode* right; int value; int height;}typedef struct TreeNode TreeNode; 插入插入 2023-05-21 算法 #Algorithm
作用域和闭包 作用域和闭包LHS和RHSLHS查询是试图找到变量的容器本身,然后对其赋值 RHS查询是简单地查找某个变量的值 在变量还没有声明(在任何作用域中都无法找到该变量)的情况下: RHS查询所有嵌套的作用域中都找不到对应的变量,则会抛出ReferenceError LHS查询,如果在最顶层(全局作用域)中都无法找到该变量,则会在全局作用域中创建一个具有该名称的变量(程序运行在非严格模式下);如果是在严 2023-05-14 你不知道的JavaScript #JavaScript
PriorityQueue源码解析 PriorityQueue源码解析优先队列,通过堆实现,默认为小顶堆 数据结构用数组模拟完全二叉树 123456789101112131415161718192021/** * Priority queue represented as a balanced binary heap: the two * children of queue[n] are queue[2*n+1] and queue 2023-05-04 Java核心技术 #Java
ArrayDeque源码解析 ArrayDeque源码解析ArrayDeque实现了Deque接口,既可以看作栈,也可以用作队列,采用循环数组实现,如果head==tail,则扩容为之前的2倍 数据结构123transient Object[] elements;transient int head;transient int tail; 构造函数12345678910111213141516171819 2023-05-03 Java核心技术 #Java
LinkedList源码解析 LinkedList源码解析LinkedList同时实现了List接口和Deque接口,既可以看作顺序容器,又可以看作队列,同时又可以看作栈 数据结构LinkedList通过双向链表实现,first和last分别指向链表的第一个和最后一个元素,当链表为空时,first和last都指向null 1234567891011121314151617181920212223transient int si 2023-05-02 Java核心技术 #Java