【复习10-12天内容】【我们一起60天准备考研算法面试(大全)-第十四天 14/60】

专注 效率 记忆
预习 笔记 复习 做题

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

本博客带大家一起学习,我们不图快,只求稳扎稳打。
由于我高三是在家自学的,经验教训告诉我,学习一定要长期积累,并且复习,所以我推出此系列。
只求每天坚持40分钟,一周学5天,复习2天
也就是一周学10道题
60天后我们就可以学完81道题,相信60天后,我们一定可以有扎实的代码基础!我们每天就40分钟,和我一起坚持下去吧!
qq群:878080619

第十四天【考研408-数据结构(笔试)】

  • 十一、KMP
  • 十二、排序
    • 1. 快速排序
    • 2. 整数集合划分
  • 十三、多路归并
    • 1. 三元组的最小距离(2020年全国硕士研究生招生考试)

十一、KMP

在这里插入图片描述

KMP是快速帮助 子串A 去匹配 主串B的算法

我们利用next记录
当B和A不匹配的时候,A应该返回B中的哪个位置

所以next应该记录的是B的快速匹配位置

具体逻辑可以搜CSDN

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 100010, M = 1000010;int n, m;
char p[N], s[M];
int ne[N];int main()
{scanf("%d%s", &n, p + 1);scanf("%d%s", &m, s + 1);for (int i = 2, j = 0; i <= n; i ++ ){while (j && p[i] != p[j + 1]) j = ne[j];if (p[i] == p[j + 1]) j ++ ;ne[i] = j;}for (int i = 1, j = 0; i <= m; i ++ ){while (j && s[i] != p[j + 1]) j = ne[j];if (s[i] == p[j + 1]) j ++ ;if (j == n) printf("%d ", i - n);}return 0;
}

十二、排序

1. 快速排序

在这里插入图片描述

  1. 快速排序的核心思想是:
    大于x的 放到数组右边
    小于x的放在数组左边
    等于x的放在数组中间
  2. 剩下的背模板即可
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=100020;
int a[N];
int n;
void quick_sort(int l,int r)
{if(l>=r) return ;int k=a[l+r>>1],i=l-1,j=r+1;while(i<j){do i++; while(a[i]<k);do j--; while(a[j]>k);if(i<j) swap(a[i],a[j]);}quick_sort(l,j);quick_sort(j+1,r);
}
int main()
{scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&a[i]);quick_sort(0,n-1);for(int i=0;i<n;i++)printf("%d ",a[i]);return 0;
}

2. 整数集合划分

在这里插入图片描述

#include <iostream>
#include <algorithm>
using namespace std;const int N = 100010;
int a[N];int sum(int a[], int l, int r)//求数组 a[l] ~ a[r] 的和
{ int res = 0;for(int i = l; i <= r; i++)res += a[i];return res;
}int main()
{int n;cin >> n;for(int i = 0; i < n; i++){cin >> a[i];}sort(a,a + n);//排序int s1, s2;s1 = sum(a, 0, n/2-1);//s1 的和小s2 = sum(a, n/2, n - 1);//s2 的和大cout << n % 2 << " " << s2 - s1;
}

十三、多路归并

1. 三元组的最小距离(2020年全国硕士研究生招生考试)

在这里插入图片描述
在这里插入图片描述
什么是多路归并?
就是三个数组排序到一个数组进行比较
是需要开一个数组的空间的

为了节约空间,我们可以通过三个数组分别用三个指针
指向各自数组,然后判断当前三个元素的大小关系以及进行相应的运算或者应用数据去计算,之后根据三个元素的大小关系进行角标转移

放到本题中

首先我们要理解题意

题意是让我们求三个数组中放到一个数组排序后,出现的最小值到最大值距离最短的是多少

比如在这里插入图片描述
a b c之间满足
最小值a 到 最大值c距离最小
并且之间包含b数组的元素

或者是
b a c也可以

总之就是
最小值和最大值并且中间包含一个与这两个集合不一样的集合元素
的距离值 ✖ 2就是答案

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;typedef long long LL;const int N = 100010;int l, m, n;
int a[N], b[N], c[N];int main()
{scanf("%d%d%d", &l, &m, &n);for (int i = 0; i < l; i ++ ) scanf("%d", &a[i]);for (int i = 0; i < m; i ++ ) scanf("%d", &b[i]);for (int i = 0; i < n; i ++ ) scanf("%d", &c[i]);LL res = 1e18;for (int i = 0, j = 0, k = 0; i < l && j < m && k < n;){int x = a[i], y = b[j], z = c[k];res = min(res, (LL)max(max(x, y), z) - min(min(x, y), z));if (x <= y && x <= z) i ++ ;else if (y <= x && y <= z) j ++ ;else k ++ ;}printf("%lld\n", res * 2);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OK3588运行python程序对摄像头数据进行图像处理

OK3588运行python程序读取usb摄像头 硬件连接用工具测试验证摄像头工作正常python 读取usb摄像头并进行图像处理 硬件连接 把usb摄像头插入HOST的usb接口。 在串口终端运行 sudo v4l2-ctl --list-devices 如下图 当前的usb设备是 /dev/video74 用工具测试验证摄像头工作正常…

贪心算法、贪心搜索/采样(greedy search/sampling)、集束搜索(beam search)、随机采样(random sample)

首先需要了解贪心算法&#xff1a; 贪心算法&#xff0c;又名贪婪法&#xff0c;是寻找最优解问题的常用方法&#xff0c;这种方法模式一般将求解过程分成若干个步骤&#xff0c;但每个步骤都应用贪心原则&#xff0c;选取当前状态下最好/最优的选择&#xff08;局部最有利的选…

Android之Intent

意图介绍 一个意图(Intent)对象包含了目标组件、动作、数据、类别、附加数据、标志六个部分。 目标组件 目标组件可以帮助应用发送显式意图调用请求。在创建Intent时&#xff0c;可以通过setComponent方法来设置一个组件&#xff0c;如&#xff1a; //设置组件 intent.setC…

LRU 缓存

题目链接 LRU 缓存 题目描述 注意点 如果插入操作导致关键字数量超过 capacity &#xff0c;则应该 逐出 最久未使用的关键字函数 get 和 put 必须以 O(1) 的平均时间复杂度运行 解答思路 如果想以O(1)的速度进行get&#xff0c;则需要将对应的key、value存到map中如果想…

​ 基于单片机智能温室大棚控制系统

功能介绍 以51单片机作为主控系统&#xff1b; DS18B20温度采集模块检测温度&#xff1b; 光敏电阻和ADC0832组成的光照检测模块&#xff1b; 土壤湿度检测模块检测土壤湿度&#xff1b; CO2检测模块检测CO2浓度&#xff1b; LCD1602显示模块显示测量值、 若温度小于温度最…

【2023江西省研究生数学建模竞赛】第三题 植物的多样性 48页论文及Python代码

【2023江西省研究生数学建模竞赛】第三题 植物的多样性 48页论文及Python代码 相关链接 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 【2…

车道线检测|利用边缘检测的原理对车道线图片进行识别

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 这两个都是博主在学习Linux操作系统过程中的记录&#xff0c;希望对大家的学习有帮助&#xff01; 操作系统Operating Syshttps://blog.csdn.net/yu_cblog/category_12165502.html?spm1001.2014.3001.5482Linux S…

【深度学习】受限玻尔兹曼机 (RBM) 初学者指南

一、说明 受限玻尔兹曼机&#xff08;Restricted Boltzmann Machine&#xff0c;RBM&#xff09;是一种基于能量模型的人工神经网络。它只有一个隐层&#xff0c;将输入层和隐层中的每个神经元互相连接&#xff0c;但不同层的神经元之间没有连接。RBM是一种无向的概率图模型&am…

一套完全开源,支持多租户,界面配置单点的后端框架JVS

JVS的多租户体系统 在IT系统中&#xff0c;“租户”&#xff08;tenant&#xff09;通常用于指代一种多租户架构&#xff08;multi-tenancy&#xff09;&#xff0c;它是一种软件架构模式&#xff0c;允许多个用户或组织共享相同的应用程序或系统实例&#xff0c;但彼此之间的…

7.5 SpringBoot 拦截器Interceptor实战 统一角色权限校验

文章目录 前言一、定义注解annotation二、拦截角色注解1. 在拦截器哪里拦截&#xff1f;2. 如何拦截角色注解&#xff1f;3. 角色如何读取?4. 最后做角色校验 三、应用&#xff1a;给管理员操作接口加注解四、PostMan测试最后 前言 在【7.1】管理员图书录入和修改API&#xf…

JMeter 中 3 种参数值的传递

目录 前言&#xff1a; (一) 从 CSV 文件读取要批量输入的变量 (二) 利用 Cookie 进行值的传递 (三) 利用正则匹配提取上一个接口的返回数据作为下个请求的输入 前言&#xff1a; 在JMeter中&#xff0c;参数值的传递是非常重要的&#xff0c;因为它允许你在测试过程中动态…

右键pdf文件没有打印

问题描述 右键点pdf文件&#xff0c;弹出的菜单找不到打印选项。网上找了很多办法&#xff0c;然并卵啊。还是得靠自己慢慢摸索。 原因分析 新安装的win11系统&#xff0c;pdf文件默认可以用windows自带的edge浏览器打开。但是edge浏览器没有能力提供右键打印功能。 解决办法…

详解LeafLet中如何展示GeoServer发布的图层组

目录 前言 一、关于图层组 1、使用图层图组的好处 2、创建图层组 二、在Leaflet中展示图层组 1、新建Html模板框架 2、绑定地图map和底图设置 3、绑定图层组 总结 前言 在之前的博文中&#xff0c;曾经重点介绍如何使用LeafLet叠加Geoserver wms图层到已有底图的方法 ,…

Python应用:什么是爬虫?

文章目录 什么是爬虫虫之初&#xff0c;性本善&#xff1f;出行社交电商搜索引擎政府部门总结 面向监狱编程爬虫的君子协议什么是君子协议君子协议是怎么产生的&#xff1f;君子协议是什么内容&#xff1f;如何查看一个网站的robots协议违反君子协议的案例 参考文献 2022年初的…

x86架构ubuntu22下运行SFC模拟器zsnet

0. 环境 ubuntu22 1. apt安装 sudo apt install zsnes 2. 运行 zsnet 参考&#xff1a;在Ubuntu上用zsnes玩SFC游戏&#xff0c;https://blog.csdn.net/gqwang2005/article/details/3877121

Linux学习之系统默认打开的文件描述符、重定向

系统默认打开的文件描述符 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。可以在/proc/PID/fd里边可以看到打开文件的描述符&#xff0c;PID需要改成具体的pid&#xff0c;比如可以使用A终端输入vim proctest之后按下回车键。 打开一个vim编辑窗口。 再打…

Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09

Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09 非常适合小朋友玩的小游戏 功能很齐全完善 项目地址&#xff1a;https://download.csdn.net/download/Highning0007/88050261

使用MFC CAD 的一些使用方式记录【追加ing】

1. 项目调试&#xff1a;由于项目很大&#xff0c;因此&#xff0c;我们调试的时候&#xff0c;不应该编译整个软件而是应该只编译对应的 类去做处理 2. debug 设置断点方面&#xff1a; 以往我们的操作都是在.exe直接执行文件上进行操作&#xff0c;但是&#xff0c;现在&am…

人工智能-神经网络

目录 1 神经元 2 MP模型 3 激活函数 3.1 激活函数 3.2 激活函数作用 3.3 激活函数有多种 4、神经网络模型 5、神经网络应用 6、存在的问题及解决方案 6.1 存在问题 6.2 解决方案-反向传播 1 神经元 神经元是主要由树突、轴突、突出组成&#xff0c;树突是从上面接收很多…

flutter开发实战-实现webview与Javascript通信JSBridge

flutter开发实战-实现webview与H5中Javascript通信JSBridge 在开发中&#xff0c;使用到webview&#xff0c;flutter实现webview是使用原生的插件实现&#xff0c;常用的有webview_flutter与flutter_inappwebview 这里使用的是webview_flutter&#xff0c;在iOS上&#xff0c;…