常用数据结构模式

概述

解决算法问题的常用数据结构:

  1. 基础数据类型
  2. 数组与字符串
  3. 链表
  4. 堆栈
  5. 二叉树
  6. 哈希表

1. 基础数据类型

一个典型问题:给定一个整数x,计算它的二进制形式中含有多少个1

2. 数组与字符串

数组算法题大多涉及排序。涉及字符串的题目也很常见,如将字符串反转、判断字符串是否是回文等。

3. 链表

有关链表的算法题大多涉及链表的操作和结构判断。如将链表倒转、判断链表是否含有环等。

相比于数组,链表的优势在于元素的插入和删除很高效,算法复杂度都是O(1),而数组的复杂度是O(n);
但是链表在获取某一元素时必须得从头遍历到元素所在位置,因此复杂度是O(n),而数组只需要知道元素下标就可以直接获取,因此复杂度是O(1);

4. 堆栈

堆栈是一种后进先出的数据结构。
经常出现的堆栈算法问题是判断括号匹配;另一常见题目是计算波兰表达式。

5. 二叉树

二叉树最常用于查找和遍历。需要掌握二叉树前序、中序、后序这3种遍历方式。
二叉树有一种特殊形式——二叉查找树,其特点是当前节点值大于左子树所有节点,小于右子树所有节点。

6. 堆

堆是一种特殊的二叉树,也被称为优先级队列。它最显著的特点是,其根节点是所有节点中的最大值或最小值。
因此在堆中查找最大或最小值很容易,时间复杂度是O(1)。在堆中插入或者删除节点的时间复杂度是O(ln(n))。
堆的应用非常广泛,最常见的是用来设计操作系统的时钟,实现时间回调功能;堆还可以用来进行快速归并排序。

7. 哈希表

哈希表最广泛的用处在于快速查询数据,其插入、删除、查找的复杂度都是O(1),哈希表设计的关键是哈希函数,哈希函数的计算值要尽量接近独立统一分布。哈希表的缺点在于,当插入的元素过多,表内空间不足时,需要重新分配空间并把原有数据重新插入。因此复杂度为O(n)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值