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

  • 相关阅读:
    一些业内有名的网站收集
    WCF重载
    FCKEditor fckconfig.js配置,添加字体和大小 附:中文字体乱码问题解决
    查询第几条到第几条的数据的SQL语句
    SPOJ 9939 Eliminate the Conflict
    UVA 10534 Wavio Sequence
    HDU 3474 Necklace
    POJ 2823 Sliding Window
    UVA 437 The Tower of Babylon
    UVA 825 Walking on the Safe Side
  • 原文地址:https://www.cnblogs.com/yeahwell/p/14225101.html
Copyright © 2011-2022 走看看