第二章 数据结构(第一章叫基础算法)
文章平均质量分 57
基本数据结构 的实现
yangmc04
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KMP 字符串
给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 P在字符串 S中多次作为子串出现。求出模式串 P在字符串 S中所有出现的位置的起始下标。输入格式第一行输入整数 N,表示字符串 P的长度。第二行输入字符串 P。第三行输入整数 M,表示字符串 S的长度。第四行输入字符串 S。输出格式共一行,输出所有出现位置的起始下标(下标从 0开始计数),整数之间用空格隔开。数据范围1≤N≤1051≤M≤106输入样例:3aba5ababa原创 2024-12-10 16:03:26 · 197 阅读 · 0 评论 -
滑动窗口 单调队列
给定一个大小为 n≤106的数组。有一个大小为 k的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k为 3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1 -3 [5 3 6] 7 3 6原创 2024-12-10 12:15:46 · 370 阅读 · 0 评论 -
单调栈 模板
给定一个长度为 N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。输入格式第一行包含整数 N,表示数列长度。第二行包含 N个整数,表示整数数列。输出格式共一行,包含 N个整数,其中第 i个数表示第 i个数的左边第一个比它小的数,如果不存在则输出 −1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2考虑 用栈来保存。可以注意到,如果向左边找第一个小的话,那么举例子a3 > a5 (3 < 5 )原创 2024-12-10 01:35:07 · 239 阅读 · 0 评论 -
模拟题 队列
实现一个队列,队列初始为空,支持四种操作:push x – 向队尾插入一个数 x;pop – 从队头弹出一个数;empty – 判断队列是否为空;query – 查询队头元素。现在要对队列进行 M个操作,其中的每个操作 3和操作 4都要输出相应的结果。输入格式第一行包含整数 M,表示操作次数。接下来 M行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。输出格式对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。其原创 2024-12-09 23:14:07 · 343 阅读 · 0 评论 -
表达式求值
给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。注意:数据保证给定的表达式合法。题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。题目保证表达式中所有数字均为正整数。题目保证表达式在中间计算过程以及结果中,均不超过 231−1。题目中的整除是指向 0取整,也就是说对于大于 0的结果向下取整,例如 5/3=1,对于小于 0的结果向上取整,例如 5/(1−4)=原创 2024-11-26 14:36:11 · 200 阅读 · 0 评论 -
数组 模拟栈
实现一个栈,栈初始为空,支持四种操作:push x – 向栈顶插入一个数 x;pop – 从栈顶弹出一个数;empty – 判断栈是否为空;query – 查询栈顶元素。现在要对栈进行 M个操作,其中的每个操作 3和操作 4都要输出相应的结果。输入格式第一行包含整数 M,表示操作次数。接下来 M行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。输出格式对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。其中,em原创 2024-11-25 23:47:46 · 228 阅读 · 0 评论 -
双链表 模板题
实现一个双链表,双链表初始为空,支持 5种操作:在最左侧插入一个数;在最右侧插入一个数;将第 k个插入的数删除;在第 k个插入的数左侧插入一个数;在第 k个插入的数右侧插入一个数现在要对该链表进行 M次操作,进行完所有操作后,从左到右输出整个链表。注意:题目中第 k个插入的数并不是指当前链表的第 k个数。例如操作过程中一共插入了 n个数,则按照插入的时间顺序,这 n个数依次为:第 1个插入的数,第 2个插入的数,…第 n个插入的数。输入格式第一行包含整数 M,表示操作次原创 2024-11-21 16:55:23 · 298 阅读 · 0 评论 -
单链表 模板题
实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 k个插入的数后面的一个数;在第 k个插入的数后插入一个数。现在要对该链表进行 M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第 k个插入的数并不是指当前链表的第 k个数。例如操作过程中一共插入了 n个数,则按照插入的时间顺序,这 n个数依次为:第 1个插入的数,第 2个插入的数,…第 n个插入的数。输入格式第一行包含整数 M,表示操作次数。接下来 M行,每行包含一个操作命令,操作命令可能为原创 2024-11-21 15:53:05 · 309 阅读 · 0 评论
分享