12.2在找工作面试的时候,面试官常常会要求应聘者现场在纸上写一些算法程序。这样可以考察应聘者对数据结构和基本算法的熟练程度。本节我们就选取一些面试程序题中的典型代表加以讲解,让读者能够对这类算法题有一个初步的了解。 12.2.1遍历一次求取单链表的中间点【问题描述】如何在遍历一次的条件下,求出链表的中间结点。 【分析】单链表是简单、基础的一类数据结构,由于它简单的结构,相对容易的实现代码,以及灵活的应用模式,成了面试考题的宠儿。链表是一种相对动态的数据结构,可随时向链表中添加结点(只要有足够的内存),添加结点时,需要为新结点分配内存,然后调整指针的指向来确保新结点被连接到链表中。由于链表中的内存不是一次性分配的,我们无法保证链表和数组一样是连续的。因此如果想在链表中找到它的第i个结点,就必须从头结点开始,沿着指向下一个结点的指针遍历链表。本题要求我们在不知道链表长度的情况下,找出链表的中间结点。其实,单链表是线性数据结构,我们可以把它当成一条直线,想象一下我们中学时所做过的一些物理题,经常会让我们去计算一条路的中点,那我们用的是什么方法呢?一般我们会设定两辆汽车,一辆快车,一辆慢车,其中快车的速度是慢车的两倍,这样两辆车同时从起点出发,当快车到达终点时,慢车正好到达这条路的中心点。同样的,我们在这道题中,引入两个指针,一个快指针,一个慢指针,快指针的移动速度是慢指针的两倍,快指针每次移动两个结点,慢指针每次移动一个结点,这样,当快指针到达单链表末尾的时候,慢指针刚好到达链表的中间结点。按照这个思路,我们的实现代码如下:图12-2运行结果
常见算法题精粹-bp产品使用说明书
相关推荐
字符串算法-BP产品使用说明书
10.2 字符串算法
字符串处理是编程中常遇到的问题,字符串匹配在数据挖掘和搜索算法中应用广泛。以下介绍三种有效的字符串匹配算法:朴素字符串匹配算法、Rabin-Karp算法和Knuth-Morris-Pratt算法。
字符串匹配是查找字符串T中是否包含字符串P。我们把字符串T称为原字符串,把字符串P称为查找模式。假设T的长度为n,P的长度为m,很明显|m|≤|n|。如果我们在进行字符串匹配的时候存在一个整数s,0≤s≤n-m,使得P字符串在T中被找到,即P[1...m]=T[s+1...s+m],我们就称s为字符串P匹配查找过程的有效位移。从这个角度来看,字符串匹配的过程其实就是查找在字符串T中模式P出现的所有有效位移。
10.2.1 朴素字符串匹配算法
朴素字符串匹配算法是一种比较原始的字符串匹配算法,它以模式P为单位去比较字符串,循环地遍历字符串T,找出所有的有效位移s。朴素字符串匹配算法思想比较简单,直接来看看代码就能理解了。
#include
using namespace std;
/****朴素字符串匹配****/
list naiveStringMartch(const string *T, const string P){
int n = T->size(), m = P.size();
list res;
for (int s = 0; s <= n - m; s++) {
bool flag = true;
for (int i = 0; i < m>at(s + i) != P[i]) {
flag = false;
break;
}
}
if (flag) res.push_back(s);
}
return res;
}
算法与数据结构
3
2024-05-23
bp产品使用说明书 - 每对顶点间的最短路径
在这份使用说明书中,我们深入讨论了如何解决图中每对可到达点对的最短路径问题。假设你是一位地图信息统计员,需要计算某省各城市之间的最短距离,详细介绍了使用Floyd-Warshall算法来优化这一复杂问题的方法。该算法不仅能够应对具有负权值的有向图结构,还能有效避免重复运算,提高运算效率。
算法与数据结构
2
2024-07-29
考勤管理系统产品详细要求说明书
这是一份详细介绍考勤系统实用性和管理系统模板的产品需求说明书,被广泛认可和使用。
SQLServer
0
2024-08-23
PCI8757同步采集卡软件使用说明书
PCI8757同步采集卡使用总线数据采集模式,基于PC机采集原始电压数据,可使用VC、VB、LabVIEW、Matlab等软件分析转换数据曲线。具体使用流程和调用方法详见说明书。
Matlab
3
2024-05-26
求解线性方程组-bp产品使用说明
11.28求解线性方程组【题目要求】设计一个程序,用雅克比迭代法解线性方程组。首先将未知数移到等式左边:1 2 3 2 1 3 3 1 2 0.1 0.2 0.72 0.1 0.2 0.83 0.2 0.84 x x x 然后构造迭代公式:1 2 3 2 1 3 3 1 2 ( 1) 0.1 ( ) 0.2 ( ) 0.72 ( 1) 0.1 ( ) 0.2 ( ) 0.83 ( 1) 0.2 ( ) 0.84 x n 设置迭代初始值,按照雅克比迭代公式求解。
算法与数据结构
3
2024-07-16
HIve UDF说明书
Hive UDF说明书是官方指定的文档,包含Hive_LanguageManual_UDF详细内容。此文档涵盖了Hive UDF的使用方法及相关功能,帮助用户更好地理解和应用Hive UDF。
Hive
3
2024-07-12
动态规划在生产优化中的应用-bp产品使用说明
在前面的部分,我们通过生产线问题的实例详细介绍了动态规划的理论基础。在本节中,我们将讨论动态规划在生产优化中的具体应用。其中,一个关键问题是矩阵链乘法,通过优化矩阵链的乘法顺序来提高运算效率。我们需要设计一种算法,通过合理添加括号来实现这一目标。回顾矩阵乘法规则,我们知道其运算效率受到矩阵乘法顺序的显著影响。
算法与数据结构
1
2024-07-28
HYMIS 概要设计说明书
范围
该系统主要涵盖以下业务模块:- 办公管理- 文件、通知、规范、规定的网上收发- 电子邮件的收发- 电子公告栏和 BBS 站- 车辆管理- 文件资料库管理- 文件资料分类登记、查询、维护- 技术资料库管理- 技术资料分类登记、查询、维护- 经营管理- 业务信息管理- 投标管理- 合同管理- 统计- 项目管理- 项目立项- 项目资料管理- 项目实施- 材供管理- 材料价格、供货、结算管理- 分承包方信息管理- 装潢材料价格管理- 设备管理系统- 设备管理、使用管理、维修管理- 产值管理、设备维护- 人事管理- 人员信息登记、维护、执行退休- 查询打印、部门维护- 设计院信息管理- 业务信息管理、方案管理- 施工图管理、图档管理- 财务收支管理、人事技术档案管理- 综合查询、其他管理- 财务报表管理- 房地产信息管理- 房产信息、销售管理- 系统管理- 用户角色管理、权限管理- 码表维护、基础数据维护- 系统日志管理
Access
6
2024-05-23
Patroni-2.0.0说明书.md
Postgresql的高可用方案patroni中文说明书。Patroni(中文:守护神)是一个模板,您可以使用Python创建模板,并利用最大化的可访问性来创建自定义的高可用性解决方案,包括分布式配置商店如ZooKeeper,etcd,Consul或Kubernetes。在数据中心或其他环境中快速部署HA PostgreSQL的数据库工程师,DBA,DevOps工程师和SRE会发现它很有用。Patroni被称为“模板”,因为它不是单一规格的即插即用复制系统。Patroni提供了多种在PostgreSQL上实现高可用性的方法。
PostgreSQL
3
2024-07-12