07 2019 档案

摘要:很多读者反应,就算看了前文 "动态规划详解" ,了解了动态规划的套路,也不会写状态转移方程,没有思路,怎么办?本文就借助「最长递增子序列」来讲一种设计动态规划的通用技巧:数学归纳思想。 最长递增子序列(Longest Increasing Subsequence,简写 LIS)是比较经典的一个问题, 阅读全文
posted @ 2019-07-20 10:28 murphy_gb 阅读(10727) 评论(3) 推荐(4)
摘要:1.正确使用equals方法 Object的equals方法容易抛出空指针异常,应使用常量或确定有值的对象来调用equals方法 例如: 如果运行上面的程序则会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else语句可以得到执行: 但是更推荐用 java.u 阅读全文
posted @ 2019-07-16 19:14 murphy_gb 阅读(1022) 评论(0) 推荐(0)
摘要:1.什么是LRU算法? LRU是一种缓存淘汰机制策略。 计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新的内容腾位置。但是要删除哪些内容呢?我们肯定希望删掉那些没有用的缓存,而把有用的数据继续留在缓存中,方便之后继续使用。那么,什么样的数据我们可以判定为有用的数据呢? LRU缓存淘汰算法就是 阅读全文
posted @ 2019-07-13 10:54 murphy_gb 阅读(22005) 评论(2) 推荐(7)
摘要:本文分两部分,第一部分列举几个有趣的位操作,第二部分讲解算法中常用的 n & (n 1)操作,顺便把用到的这个技巧的算法题列出来讲解一下,因为位操作很简单,所以假设读者已经了解与、或、异或这三种基本操作。 位操作(Bit Manipulation)可以玩出很多奇淫技巧,但是这些技巧大部分都过于晦涩, 阅读全文
posted @ 2019-07-13 01:15 murphy_gb 阅读(1206) 评论(0) 推荐(4)
摘要:有这样一道面试题: 现有40亿个整数,如果再给定一个新的整数,怎么判断这个整数是否在这40亿个整数中? 你可能首先会想到用一个set存储,那个新数只需判断是否在set中。但是如果用set存储的话,如果一个整数4个字节,40亿个的话就是160亿个字节,大概是16GB。这需要的内存就非常大了。 那么如果 阅读全文
posted @ 2019-07-03 22:21 murphy_gb 阅读(1297) 评论(1) 推荐(2)