刷题难度简单整理
入门难度:所谓师父领进门,修行靠个人。入门难度的题目可以看书籍和帖子一般问题不大。就是概念的理解和基本编程语法。
简单难度:我觉得最经典的三个题目是快速判断质数,二叉树的遍历和斐波那契数列的DP。第一题要知道合数必有一个开根号的factor是国外高中竞赛的知识,也是一种二分的思路。只不过是开根号。第二题计算机本科教材里有。CS专业要占一定的优势。第三题相关数学已经完全理解了。整个过程都可以在自己脑海中想象出来了。了解DP的思路和写法就行了。
中等难度:基本已经了解了刷题的主要目的之一就是用树。知道heap是一种树,PriorityQueue是一种queue。双指针可以是一种DP。DP也得画树图。因为题目的流程都清楚了一开始不会想到树。4 sum可以理解用回溯法。N叉树的前序后序遍历是真简单。分治得慢慢想。是根节点到左子树,不是简单的从根节点到下一个节点。递归就是遍历树的一种方法。Object oriented design(OOD)写个Pair再简单不过了。
难题:可以适当看源码。能够联系源码的TreeNode和Node。知道Graph里有Vertex。每个Vertex又有一个HashMap。走迷宫写个direction简单。ConcurrentHashMap里有Segment。学学线段树也是可以的。LinkedHashMap和LinkedHashSet信手拈来。能用API就用API。遇到Trie了还是抄模版吧。
超难题:数据结构用的单调栈,线段树或者Trie这种现成的也没有。题目的文字游戏居然是合理的。自觉用DP而不是用n%4 != 0。Two Sum用Map反转值和指针靠的是MapReduce这种架构而不是聪明。DP来自神经网络。Java有JTree也有TreeNode。
#面经#