摘要: 一、概念 栈:后进先出,先进后出的数据结构。栈是一种“操作受限‘的线性表,只允许在一端插入和删除数据。 当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,我们就应该首选“栈”这种数据结构。 二、如何实现“栈” 既可用数组(顺序栈),也可用链表(链式栈) 数组实现: // 基 阅读全文
posted @ 2020-06-16 22:44 大杂草 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 一、概念 链表:通过“指针”将一组零散的内存块串联起来使用。 数组vs链表 二、常见链表 三种常见的链表:单链表、双向链表、循环链表。 单链表: 时间复杂度: 插入和删除:O(1) 随机访问:O(n) 循环链表: 一种特殊的单链表,跟单链表唯一的区别在尾结点:单链表尾结点是Null、循环链表尾结点指 阅读全文
posted @ 2020-06-16 18:12 大杂草 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 一、概念 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 关键词: 1. 线性表(Linear List),线性表就是数据排成像一条线一样的结构。 相对的是,非线性表 2. 连续的内存空间和相同类型的数据。 有这两个限制,有一个特性:“随机访问”。通过 阅读全文
posted @ 2020-06-16 17:58 大杂草 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 大O复杂度表示法 大O复杂度表示法,表示代码执行时间随数据规模增长的变化趋势,也叫作渐进时间复杂度,简称时间复杂度。 时间复杂度分析 1. 只关注循环执行次数最多的一段代码 T(n)=O(2+n+1)=O(n) 2. 加法法则:总复杂度等于量级最大的那段代码的复杂度 如果T1(n)=O(f(n)), 阅读全文
posted @ 2020-06-16 15:44 大杂草 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 20个最常用的、最基础的数据结构与算法。 数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树; 算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。 事半功倍的学习技巧: 1. 边学边红,适度刷题。 每周花1-2小时,集中把这周三 阅读全文
posted @ 2020-06-16 15:32 大杂草 阅读(197) 评论(0) 推荐(1) 编辑