定位问题
定位问题类型:
- 这个问题是什么类型的问题?(排序、查找、最优化)
- 暴力破解的复杂度是多少?
- 这个问题的复杂度下限是多少?即最低的时间复杂度是多少?
- 采用哪些数据结构思维,能把这个问题解决?
通用的解题方法论论:
- 复杂度分析
- 定位问题。根据问题类型,确定采用何种算法思维。
- 数据操作分析。
- 编码实现。
案例:
- 找出数组
[1,2,3,6,4,3,2,8,1]
中现次数最多的数字:通过map 的方式,将复杂度由 O(n*n) 降低为 O(n)。 - 找出数组
[1,2,3,6,4,3,2,8,1]
中和 4 的两个数的下标:通过构建hash 表的方式,将复杂度由 O(n*n) 降低为 O(n)。