随笔分类 -  数据结构和算法

缓存的简单实现方式
摘要:参考: 《Java 并发实践》 李大狗大神的大作和源码非常值得分析阅读 1. 的`hashCode`:数据缓存在类变量中 字符串类维护了一个常量池—每当使用 创建对象,都会首先检查字符串是否在常量池中—有的话直接返回池中对象的实例引用,否则则创建一个对象返回 并将对象放进池中 。 没当调用 方法时, 阅读全文

posted @ 2018-10-04 15:19 coderDu 阅读(198) 评论(0) 推荐(0)

LRU基本介绍及其实现方式
摘要:原文地址: http://note.youdao.com/noteshare?id=1abbeb1deee85f0203001e9bc34f65b4 参考 "LRU算法" "dubbo cache" 一.基本介绍 1.1 常见缓存淘汰算法及其实现思路 对于缓存,常见淘汰算法有3: 1. : firs 阅读全文

posted @ 2018-10-04 15:16 coderDu 阅读(2745) 评论(0) 推荐(0)

96. Unique Binary Search Trees
摘要:所用特性 BST: 1. 左子树和右子树是BST的递归定义; 2. 如果节点数量相同,不论节点值如何,可以构造的BST个数相同; 问题描述 给n,求有多少个唯一的BST可以存放1 n这些数。 求解思路 "翻译" 问题可以以动态规划的方式解决。解释如下: 我们可以枚举数列中的每个数i作为root,此时 阅读全文

posted @ 2018-04-21 14:14 coderDu 阅读(131) 评论(0) 推荐(0)

leeCode之Array二
摘要:"31. Next Permutation" 问题 Implement next permutation排列, which rearranges重排列 numbers into the lexicographically next greater(下一个比较大的) permutation of nu 阅读全文

posted @ 2018-04-21 14:13 coderDu 阅读(148) 评论(0) 推荐(0)

leeCode之Array
摘要:"1. Two Sum" 问题 一个数组中一定有两个数字和 ,求出这两个数字的下标。 思路 将数字一次存储在 中,然后每加入一个数字就检查是否 中是否有与其和为 的数字,有则返回。 注意 在`HashMap`中的存储方式是哈希表,所以查找速度会很快。 public List threeSum(int 阅读全文

posted @ 2018-04-21 14:12 coderDu 阅读(211) 评论(0) 推荐(0)

leetCode之linked list题目汇总 二
摘要:总结要点: 1. 有些题如果想不出“最优解”,可以用O(n)的空间复杂度换区简单的解法,比如克隆链表; 2. 对链表操作时,不管是反转还是拼接, 注意将尾节点的后续节点设置为null,不要怕多余,因为可鞥有未考虑到的情况形成回环 ; 3. 对于代码 等价于 ,复制顺序是从右向左的; 4. ,顺序是从 阅读全文

posted @ 2018-04-21 14:11 coderDu 阅读(244) 评论(0) 推荐(0)

leetCode之linked list题目汇总 一
摘要:总结 对链表的操作主要分为两种 : 1. 多个指针配合操作节点,一般空间复杂度低; 2. 递归操作; 3. 还可以使用java内置的数据结构,比如 等等; 其他要点 : 1. 对一个位置的删除和插入,都需要知道前一个节点; 1. 虚头部用于保留“前一个节点”; 2. 节点赋值可以转移“前一个节点位置 阅读全文

posted @ 2018-04-21 14:11 coderDu 阅读(533) 评论(0) 推荐(0)