算法笔记 01

414 阅读1分钟

1 Common Data Structure

  • 数组、字符串串 / Array & String
  • 链表 / Linked-list
  • 栈 / Stack
  • 队列列 / Queue
  • 双端队列列 / Deque
  • 树 / Tree

数组、字符串串 / Array & String

优点

构造简单

根据下标(index)在O(1)时间索引元素

缺点

分配空间必须连续

查询需要遍历每个元素 O(n)

删除元素 O(n)

添加元素 O(n) 可能涉及扩容

leetcode 242

String 的 charAt 直接用下标从 value 获取 toCharArray 会 new 新的 char[] 再使用 System.arraycopy 拷贝填充

System.arraycopy 效率?www.cnblogs.com/wellmaxwang…


链表 / Linked-list

优点

分配空间无需连续

在O(1)时间删除或添加元素

缺点

查询需要遍历每个元素 O(n)

leetcode 25


栈 / Stack

特点

后进先出(LIFO)

leetcode 20

leetcode 739


队列列 / Queue

特点

先进先出(FIFO)


双端队列列 / Deque

特点 双链表

头尾在 O(1) 内进行数据的查看、添加和删除

leetcode 239


树 / Tree

普通⼆二叉树
平衡⼆二叉树
完全⼆二叉树
⼆二叉搜索树
四叉树
多叉树 
特殊的树:红⿊黑树、⾃自平衡⼆二叉搜索树

遍历

  • 广度优先
  • 前序遍历(Preorder Traversal)
  • 中序遍历(Inorder Traversal)
  • 后序遍历(Postorder Traversal)

leetcode 250

leetcode 230