zoukankan      html  css  js  c++  java
  • 手把手带你刷Leetcode力扣

    B站:爱学习的饲养员

    目标:简单题、中等题会刷,至少有思路

    1. 算法的时间复杂度和空间复杂度

    1.1 时间复杂度

    1)什么是时间复杂度

    算法的执行效率 = 算法的执行时间与算法的输入值之间的关系

    2)大O表示法

    3)常用时间复杂度案例分析

    O(1)、O(logN)、O(N)、O(NlogN)、O(N2)

    O(1):时间复杂度和输入值没有关系

    O(logN):

    O(N):1层循环

    O(M + N):2个循环相加

    O(NlogN):1个循环套1个O(logN)循环

    O(N2):2个循环嵌套

    4)常用时间复杂度对比

    O(1) < O(logN) < O(N) < O(NlogN) < O(N2) < O(2n) < O(n!)

    二分查找O(logN)

    排序O(NlogN)

    1.2 空间复杂度

    1)什么是空间复杂度

    算法的存储空间与输入值之间的关系。

    2)大O表示法

    O(1)、O(N)

    O(1):常量

    O(N):array、list、linked list、递归

    O(N2):2个循环嵌套

    3)常用空间复杂度案例分析

    4)常用空间复杂度对比

    时间和空间只能二选一。面试时,和面试官讲清楚。工作时,时间 > 空间。

    2. 常用的数据结构

    2.1 数组Array

    1)定义

    数组:在连续的内存空间中,存储一组相同类型的元素。

    2)常用API

    创建数组:

    新增元素:尾插O(1)、中间插入O(N)

    访问元素(用索引下标访问元素): O(1)

    更新元素: O(1)

    删除元素:remove元素O(N)、pop(下标)O(N)、pop()O(1)

    获取数组长度:len(a)

    遍历数组:for in;for in enumerate; for in range

    查找某个元素:O(N)

    数组排序:

    2.2 链表 

    1)定义

    链表:

    特点:写很快读很慢,适用读少写多的情形

    2)考察项

    访问Access:O(N)

    搜索Search:O(N)

    插入Insert:O(1)

    删除Delete: O(1)

    3)常用API

    创建链表、添加元素、访问元素、查找元素、删除元素、链表的长度

    链表练习题:203 移除链表元素 206 反转链表

    3. 常用算法

  • 相关阅读:
    程序员深夜惨遭老婆鄙视,原因竟是CAS原理太简单?| 每一张图都力求精美
    微前端大赏
    【老李瞎折腾】001、折腾一下DDNS
    【老李瞎折腾】000、使用树莓派搭建自己的服务器
    【老李瞎折腾】目录
    RGB打水印在YUV图片上
    BMP格式解析
    测试开发不会前端?ElementUI你需要了解一下
    如何通过命令行运行Postman脚本2020-09-15
    长点心吧!测试老鸟教你如何避免背锅
  • 原文地址:https://www.cnblogs.com/yeahwell/p/14225101.html
Copyright © 2011-2022 走看看