1、数组、链表、栈、队列

1、数组

构建简单、索引简单O(1)

需要一段连续的空间、check某元素存在与否要O(n)时间复杂度

一些问题:

https://leetcode-cn.com/problems/valid-anagram/

2、链表

灵活分配空间、增删时间复杂度O(1)、适用于数据个数不定算法中进场添加删除等

查询元素O(n)

一些问题:

https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ (K 个一组翻转链表

3、栈

后进先出(LIFO)、所有操作都在栈顶完成、可用一个单链表实现(在链表头操作)

适用于只关心上一次操作的情况

一些问题:

(有效的括号)https://leetcode-cn.com/problems/valid-parentheses/

(每日温度)  https://leetcode-cn.com/problems/daily-temperatures/

4、队列

先进先出(FIFO)、队尾加入队头删除、可用双链表实现

适用于按照一定顺序处理数据,且数据在不断变换。

广度优先搜索

双端队列

适用于实现一个长度动态变化的窗口

一些问题:

239. 滑动窗口最大值

猜你喜欢

转载自www.cnblogs.com/feihu-h/p/12154418.html
今日推荐