Python知识分享网 - 专业的Python学习网站 学Python,上Python222
数据结构与算法面试最全合集 PDF 下载
发布于:2024-09-11 09:31:15
(假如点击没反应,多刷新两次就OK!)

数据结构与算法面试最全合集 PDF 下载 图1

 

 

资料内容:

1.2 算法
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作
算法效率的度量是通过时间复杂度空间复杂度来描述的。
1.2.0.1 时间复杂度 一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度
之和记为 T(n),它是该算法问题规模 n 的函数,时间复杂度主要分析 T(n) 的数量级。
1.2.0.2 空间复杂度 算法的空间复杂度 S(n),定义为该算法所耗费的存储空间,它是问题规模 n 的函
数。
2 线性表
线性表是具有相同数据类型的 n 个数据元素的有限序列。即除第一个元素外,每个元素有且仅有一
个直接前驱,除最后一个元素外,每个元素有且仅有一个直接后继。插入、删除和查找的算法平均时间复
杂度均为 O(n)
2.1 线性表的顺序表示
线性表的顺序存储又称为顺序表,主要特点如下:
(1) 能进行随机访问。可通过首地址和元素序号可以在 O(1) 时间内找到指定的元素。
(2) 顺序表逻辑上相邻的元素物理上也相邻,导致在插入和删除时需要移动大量的元素。
2.1.2 常见算法
2.1.2.1 算法:设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为 O(1) 扫描
顺序表 L 的前半部分元素,对于元素 L[i] 将其与后半部分对应元素 L[L.length i 1] 进行交换。
2.1.2.2 算法:已经在一维数组 A[m+n] 中依次存放着两个线性表 (a1, a2...am) (b1, b2...bm),试编
写一个函数,将数组中两个顺序表的位置互换,即将放在前面 核心思想:首先将 A[m+n] 中的全部元素
(a1, a2...am, b1, b2...bn) 原地逆置为 (bn, bn1, ...b2, b1, am, ...a1),再对前 n 个元素和后 m 个元素分别使用
逆置算法,就可以实现。