数据结构与算法—基础
文章平均质量分 87
数据结构与算法基础系列
菜鸡本鸡
这个作者很懒,什么都没留下…
展开
-
栈
文章目录栈如何实现一个"栈"?支持动态扩容的顺序栈栈在函数调用中的应用栈在表达式求职中的应用栈在括号匹配中的应用如何实现浏览器的前进和后退功能?栈“栈”例子:栈可以看作就是一摞叠在一起的盘子。都是从下往上一个一个放,取的时候也是从上往下一个一个地以此取,。先进后出,后进先出 ,这就是“栈”的结构。从栈的操作特性上看,栈就是一种操作受限的线性表,只允许在一端插入和删除数据。相比数组和链表,栈带来更多的限制,为什么不直接使用数组或者链表?从功能来上说,数组或链表确实可以代替栈,但是 特定的数据结构原创 2021-01-04 16:38:25 · 285 阅读 · 0 评论 -
链表(二)如何轻松写出正确的链表代码
链表(二)如何轻松写出正确的链表代码01、技巧一:理解指针或引用的含义有些语言有指针的概念,比如c语言;有些没有指针,用的是“引用”,比如java、py;隐私都一样,都是存储所指对象的内存地址;指针 & 引用:将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量例如:p->next=p->next->next这行表示:p 结点的 next 指针存储了 p结点的下下一个结点的内存地址原创 2020-12-07 23:04:10 · 103 阅读 · 0 评论 -
链表(一)
链表(一)链表常用场景:LRU缓存淘汰算法缓存是一种提高数据读取性能的技术,常见的有:CPU缓存、数据库缓存、浏览器缓存等等;缓存有大小限制,缓存用满时,哪些应该被清理出去,有缓存淘汰策略来决定。常见的策略有三种:先进先出策略FIFO(first in,first out)、最少使用策略LFU(least frequently used)、最近最少使用策略LRU(least recently used)01、链表结构数组需要一块 连续的内存空间 来存储,对内存要求比较高。如果申请一个100MB原创 2020-12-07 23:01:12 · 163 阅读 · 0 评论 -
复杂度分析(二)
文章目录复杂度分析(二)01、最好、最坏情况时间复杂度02、平均情况时间复杂度03、均摊时间复杂度复杂度分析(二)01、最好、最坏情况时间复杂度// n 表示数组 array 的长度int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } return pos;}这段代码的时间复杂度就是O(n原创 2020-12-05 17:11:31 · 598 阅读 · 0 评论 -
复杂度分分析(一)
文章目录01、什么是数据结构?什么是算法1.01、从两个层面来理解;广义上来讲狭义上来讲总02、复杂度分析2.01、什么是复杂度?2.02、为什么需要复杂度分析?2.03、大O复杂度表示法**03、时间复杂度分析**3.01、执行次数最多3.02、加法法则3.03、乘法法则3.01、 几种常见的时间复杂度案例分析3.02、 几种常见的多项式时间复杂度1. O(1)2. O(logn)、O(nlogn)O(log^n) 、O(nlog^n)O(logn)、O(nlogn)3. O(m+n) 丶O(m * n原创 2020-12-05 17:09:21 · 789 阅读 · 0 评论