定位问题

定位问题类型:

  • 这个问题是什么类型的问题?(排序、查找、最优化)
  • 暴力破解的复杂度是多少?
  • 这个问题的复杂度下限是多少?即最低的时间复杂度是多少?
  • 采用哪些数据结构思维,能把这个问题解决?

通用的解题方法论论:

  • 复杂度分析
  • 定位问题。根据问题类型,确定采用何种算法思维。
  • 数据操作分析。
  • 编码实现。

案例:

  • 找出数组[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)。