07 2021 档案
摘要:搜索二叉树 默认没重复节点,左边节点小于根节点 右子节点大于根节点 重复的节点可以用list保存或者value增加1 搜索二叉树删除: 1. 没孩子 直接删除 父节点指向为null 2. 有一个孩子 父节点指向孩子 3. 有两个孩子 取左孩子的最右孩子 或 取右孩子的最左节点 avl树/红黑树/sb
阅读全文
摘要:1. 不用比较判断找出AB中较大的数 1 public class getMaxWithOutCompair { 2 public int flip(int n) { 3 return n ^ 1; 4 } 5 6 public int sign(int n) { 7 // 如果负数返回0 如果正数
阅读全文
摘要:1 public class Element<V> { 2 public V value; 3 4 public Element(V value) { 5 this.value = value; 6 } 7 8 public static class UnionFindSet<V> { 9 publ
阅读全文
摘要:题目: 找出一组数中 右边第一个比他大的数 和 左边第一个比他大的数 维护一个栈底到栈顶 从大到小的栈,当压入的数大于栈顶的数 统计栈顶数的左边最大与右边最大 当没有压入值的时候 依次弹出 求出左边最大的值 栈里 底下的数是大于当前数的 上面的数是小于当前数的 求最近的大于当前值的数是 栈顶到栈底
阅读全文
摘要:1 public class MaxWindow { 2 public int[] getMaxWindow(int[] arr, int w) { 3 int[] res = new int[arr.length - w + 1]; 4 LinkedList<Integer> queue = ne
阅读全文
摘要:经典解法:给每个字符前后加入一个特殊(任意字符)字符 manacher算法: R 最远回文右边界 C 最远回文右边界的中心点 回文直径半径 回文半径数组 情况1: i没在最远回文边界里 继续暴力扩 情况2: i在最远回文边界里 1. i撇的回文区域在最远回文边界里 i的最大回文区域跟i撇的一样 2.
阅读全文
摘要:1 public class KpmStr { 2 public int getIndexOf(String s, String m) { 3 if (s == null || m == null || s.length() < 1 || m.length() < 1 || s.length() <
阅读全文
摘要:相同key请求要落在同一个节点 假设有3台数据库,利用数组可以构建成一个环,三台机器均匀的落在一个环上 请求落在环上的时候 顺时针找到最近的服务,这里有两个问题, 1. 如何保证节点混匀的落在环上 2. 添加或删除节点的时候数据偏移问题如何解决 使用虚拟节点, A:1000虚拟节点 B:1000虚拟
阅读全文
摘要:1. 类的加载 2. 对象内存分配 指针碰撞 空闲列表 3. 处理并发安全问题 cas/锁 TLAB 线程的分配空间在堆内存中隔离开,在堆中为每个线程预先分配一小块不同的空间,每个线程创建对象都在自己对应的空间中完成。 4. 属性默认初始化 5. 设置对象头 类信息 锁信息 hashcode GC信
阅读全文
摘要:先序遍历 非递归写法 1. 先入栈 弹出 打印 2. 然后先压入右节点 再压入左节点 3. 重复 1 public void printPre(TreeNode node) { 2 Stack<TreeNode> stack = new Stack<>(); 3 stack.push(node);
阅读全文
摘要:哈希表(o1) 常数操作 如果存储的基本数据类型,存储的是值 如果存储的是引用类型,存储的是引用内存地址 有序表(o logn) key有序组织 判断一个链表有环无环,第一个入环点? 快慢指针是否相交 有环判断单链表相交点? 慢指针从相交点开始 快指针从头开始 每次都只一步,相交的点是第一个入环点
阅读全文