算法题的种类
第一类题目:
某特定类型题的变形:二分答案转化为判定,最长上升子序列,最长公共子序列
难点:需要大量练习,总结解题经验(分析题眼,应对策略)
第二类题目:
某数据结构、某算法的考察:并查集,优先队列,Dijkstra算法,树遍历
难点:数据结构理解并运用难度大(红黑树,B树),算法复杂难理解(KMP算法,Tarjan算法)
第三类题目:
实际中真实的问题:大整数乘法,高精度乘法
难点:抽取合适的数据结构,复杂边界条件的讨论
前两类题目有交集
解算法题的一般思路
解决题目,其实等价于,找到解决问题所需的迭代结构或递归结构
我们在解题的时候,初学者的思维不会直接从问题映射到具体的code上,中间有个转换过程:
某题目 -->
二分 -->
(r=mid;l=mid+1;mid=(l+r)>>1
还是 l=mid;r=mid-1;mid=(l+mid+1)>>1
?) -->
判别函数怎么确定?
某题目 -->
DP -->
最长上升子序列 -->
细节问题</