美文网首页
数据结构与算法笔记

数据结构与算法笔记

作者: 读书三万本 | 来源:发表于2020-07-03 22:59 被阅读0次

1 数据结构

  • 列表,基本数据结构,顺序存储结构,可以通过索引快速查找元素,删除和增加元素比较麻烦,特别是增加元素可能要开辟新的存储空间。
  • 链表,基本数据结构,链式存储结构,通过node.next访问下一个元素,只能从根节点开始查找元素,元素删除和插入比较简单,不用使用连续的存储空间。
  • 队列,一种只允许先进先出的存储结构,支持(enqueue、dequeue功能)
  • 栈,一种只允许后进先出的存储结构,支持pop、push,查看head值的功能
  • 堆(最大堆/最小堆),一种特殊的完全二叉树,堆顶式是最大值或者最小值,堆可以完全通过一个列表存储,满足:node.parent = i/2, node.left=2i, node.right=2i+1。堆支持插入(直接在堆的最后一个位置插入一个元素,然后维护堆的性质)和删除操作(堆顶和队尾元素交换,然后维护堆的性质)。堆可以用于堆排序、优先级队列(支持最大值有限弹出)中。
  • 二叉树,node.value,node.left, node.right。
    • 搜索二叉树,指根节点一定比左树的所有节点大,一定比右子树的所有节点值小
    • 完全二叉树,树的深度为h,h-1层必须是满的,h层优先填满左边叶节点,可以用数组存储,可以分解为完全二叉树和满二叉树
  • 单调栈,保证堆顶式最大的,解决Next greater Number问题
  • 单调队列,队列首是最大的

2 算法

  • 动态规划:一般用于求解最值,当问题的解可以通过子问题的解来得到时使用,通常子问题存在重叠,通过存储中间结果来减少重复计算。
    • 状态定义,确定状态是什么,动态表存储什么
    • 转移函数,确定选择并泽优
    • 明确边界/badcase,递归时是终止条件;使用dp-table时是初始值的选取
  • 二分查找:一个问题一分为二,
  • 双指针:通过两个指针优雅地解决问题,在链表的相关问题中常用
  • BFS(广度优先):
  • DFS(深度优先):
  • 滑动窗口:

相关文章

  • 02数据结构与算法复杂度分析上

    数据结构与算法之美专栏笔记 1. 为什么要学习数据结构和算法 数据结构和算法本身解决的是“快”和“省”的问题,让代...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

  • 【算法笔记】各种排序基础(续)

    以下内容部分来自极客时间 -王争-数据结构与算法之美 的学习笔记,在上面有延伸拓展 算法和数据结构系列文章:【算法...

  • 最新完整数据结构与算法

    最新完整数据结构与算法 P11_课程介绍 P22_数据结构与算法概述_数据结构 P33_数据结构与算法概述_算法 ...

  • 如何学习数据结构与算法

    笔记源于极客时间《数据结构与算法之美》 什么是数据结构?什么是算法?从广义上讲,数据结构就是指一组数据的存储结构。...

  • 数据结构与算法笔记1

    数据结构与算法笔记1 https://blog.csdn.net/memray/article/details/8...

  • 数据结构与算法

    数据结构与算法之美 数据结构与算法之美1--如何学数据结构与算法之美2--复杂度分析(上)数据结构与算法之美3--...

  • 常用数据结构算法及其示例-基础数据结构

    同步博客:My Love 记录一下在极客时间学习数据结构与算法的笔记,将自己看到听到的有关数据结构与算法的内容都记...

网友评论

      本文标题:数据结构与算法笔记

      本文链接:https://www.haomeiwen.com/subject/dzzeqktx.html