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. 滑动窗口最大值

5、树

递归

普通二叉树、平衡二叉树、完全二叉树、二叉搜索树、四叉树、多叉树

红黑树、自平衡二叉树

树的遍历(前、中[二叉搜索树常用]、后)

二叉搜索树:节点值比左孩子大比又孩子小

一些问题:

230. 二叉搜索树中第K小的元素 

posted on 2020-01-06 00:00  feihu_h  阅读(251)  评论(0编辑  收藏  举报

导航