环境准备

力扣

键盘设置.png

VSCode

  • https://vscodethemes.com/
  • LeetCode Plugin
  • Java Plugin(IDEA)
  • VSCode使用技巧

    CodeStyle

  • Google Code Style

  • 自顶向下编程方式

    • 关键函数突出,类似新闻稿
    • 先写主干逻辑关键函数占位串逻辑,逻辑上实现后再实现函数细节

      复杂度分析

      时间复杂度

  • 使用Big O notation进行标记

    • O(1) 常数复杂度 ConstantComplexity
    • O(log n) 对数复杂度 LogarithmicComplexity
    • O(n) 线性复杂度 LinearComplexity
    • O(n log n) 线性对数复杂度 LinearLogarithmicComplexity
    • O(n^2) 平方复杂度 SquareComplexity
    • O(n^3) 立方复杂度 CubicComplexity
    • O(2^n) 指数增长复杂度 ExponentialGrowthComplexity
    • O(n!) 阶乘复杂度 FactorialComplexity
  • 通常只看最高复杂度的运算,忽略前面的常数系数
  • 时间复杂度在n比较小时,算法复杂度相差不大,当n增大时,差距明显拉开

时间复杂度.png

  • 主定理 master theorem
    • 二分查找,每次都执行一半的查找,复杂度O(log n)
    • 二叉树遍历,每个节点都访问且只访问一次,复杂度O(n)
    • 排好序的二维矩阵查找,复杂度O(n)
    • 归并排序,复杂度O(n log n)

主定理.png

空间复杂度

常见

image.png