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. 常用算法

  • 相关阅读:
    Shell printf 命令
    Shell echo命令
    Shell 基本运算符
    Shell 数组
    Shell 传递参数
    Shell 变量
    Spark基础知识汇总
    DataScientist————汇总篇
    Java的Unsafe类
    java 中文字符和unicode编码值相互转化
  • 原文地址:https://www.cnblogs.com/yeahwell/p/14225101.html
Copyright © 2011-2022 走看看