(该篇基本等价于up主视频的学习笔记记录)
基本概念
-
线性表:零个或多个数据元素的有限序列
- 不同的数据物理存储结构
- 顺序存储结构:数组
- 链式存储结构:链表 - 特殊类型(功能比较专一):
- 栈(先入后出):比如撤销功能
- 队列(先入先出) :比如客服系统
(栈和队列底层是通过数组实现的)
- 不同的数据物理存储结构
-
数组
- 在连续内存空间中,存储相同类型的元素。
- 数组索引从0开始计数,即索引n对应数组第n-1个元素
- 基本操作及其时间复杂度
- 访问(通过索引获取):O(1)
- 搜索(通过元素获取):O(n)
- 插入:O(n)
- 删除:O(n)
(访问是指根据索引查询,搜索是指根据指根据值查询)
- 优点
- 易查询
- 缺点:
- 不易插入删除
- 需要提前固定存储空间
- 应用场景:
- 适用于变化少多查询的线性表
基本操作python实现
#创建
array=[1,2,3,4]
#添加元素5
array.append(5)
#访问第2个元素
num=array[1]
#修改第2个元素为6
array[1]=6
#查找元素3对应的索引
idx=array.index(3)
#插入元素6到索引1
array.insert(1,6)
#删除索引1对应的元素
del array[1]
#删除元素3
array.remove(3)
#获取数组长度
length=len(array)
#遍历数组一:遍历元素
for i in array:
num=i
#遍历数组二:遍历索引与元素
for idx,i in enumerate(array):
index=idx
num=i
#数组排序,参数reverse默认为False
array.sort()
题目
熟悉数据结构
熟悉数据结构+算法
这里例举一般遇到链表题都有哪些解法,建议先看算法解题套路相关文章
- 哈希表:常用于简单统计
- 二分法:常用于有序数组
- 双指针
- 动态规划:常用于求解最优连续子序列
- 其他
重中之重
八大排序算法(后续会单独出一章)
八大经典排序算法详解
排序稳定性
对应题目请见912. 排序数组