当前位置: 首页 > news >正文

《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 1.询问学号,2.寄包柜,3.合并两个有序数组

《算法通关指南:数据结构和算法篇 — 顺序表相关算法题》— 1.询问学号,2.寄包柜,3.合并两个有序数组


在这里插入图片描述

🔥小龙报:个人主页
🎬作者简介:C++研发,嵌入式,机器人方向学习者
❄️个人专栏:《C语言》《算法》KelpBar海带Linux智慧屏项目

永远相信美好的事情即将发生

在这里插入图片描述

文章目录

  • 《算法通关指南:数据结构和算法篇 --- 顺序表相关算法题》--- 1.询问学号,2.寄包柜,3.合并两个有序数组
  • 前言
  • 一、询问学号
    • 1.1题目
    • 1.2算法原理
    • 1.3代码
      • 1.3.1数组版本
      • 1.3.2vector
  • 二、寄包柜
    • 2.1题目
    • 2.1算法原理
    • 2.3代码
  • 三、合并两个有序数组
    • 3.1题目
    • 3.2算法原理
    • 3.3代码
  • 总结 --- 每日励志时刻


前言

本系列讲解算法竞赛的数据结构在算法竞赛中,我们主要关心的其实是时间开销,空间上是基本够用的,因此我们是使用庞大的数组实现的话不多说冲!


一、询问学号

1.1题目

链接:询问学号
在这里插入图片描述

1.2算法原理

这道题就是用数组存储每一个进来的学生,数组的下标表示同学是第 i 个进入教室的

1.3代码

1.3.1数组版本

#include <iostream>
using namespace std;
const int N = 2e6 + 10;
int a[N];
int main()
{int n, m;cin >> n >> m;for (int i = 1; i <= n; i++)cin >> a[i];while (m--){int x;cin >> x;cout << a[x] << endl;}return 0;
}

1.3.2vector

#include <iostream>
#include <vector>
using namespace std;
const int N = 2e6 + 10;
vector<int> a(N);
int main()
{int n, m;cin >> n >> m;for (int i = 1; i <= n; i++)cin >> a[i];while (m--){int x;cin >> x;cout << a[x] << endl;}return 0;
}

二、寄包柜

2.1题目

链接:寄包柜
在这里插入图片描述

2.1算法原理

解法就是如果是一就把k放到第i个柜子的第j个格子如果是2输出即可
注意:这道题ai是未知的使用二维数组会报错(数组开辟空间过大),故使用vector,因为vector数组在开辟空间下标从0开始,故当a[i].size() <= j时便要扩容到j+1即可

2.3代码

#include <iostream>
#include <vector>
using namespace std;
const int N = 1e5 + 10;
vector<int> a[N];   //创建n个柜子
int main()
{int n, q;cin >> n >> q;while (q--){int i, j, k, op;cin >> op >> i >> j;if (op == 1){cin >> k;if (a[i].size() <= j) //vector创建从下标0开始a[i].resize(j + 1);a[i][j] = k;}else if (op == 2)cout << a[i][j] << endl;}return 0;
}

三、合并两个有序数组

3.1题目

链接:合并两个有序数组
在这里插入图片描述

3.2算法原理

可以创建⼀个辅助数组temp,然后用两个指针分别指向两个数组。每次拿出⼀个较小的元素放在辅助数组中,直到把所有元素全部放在辅助数组中。最后把辅助数组的结果覆盖到nums1中

3.3代码

class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {vector<int> temp(m + n);int cur1 = 0,cur2 = 0,i = 0;while(cur1 < m && cur2 < n){if(nums1[cur1] <= nums2[cur2])temp[i++] = nums1[cur1++];elsetemp[i++] = nums2[cur2++];} while(cur1 < m){temp[i++] = nums1[cur1++];}while(cur2 < n)temp[i++] = nums2[cur2++];for(int i = 0;i < m + n;i++)nums1[i] = temp[i];}
};

总结 — 每日励志时刻

在这里插入图片描述

http://www.dtcms.com/a/558150.html

相关文章:

  • 陕西省关于网站信息内容建设南通网站建设企业
  • 【愚公系列】《MCP协议与AI Agent开发》003-大模型原理及MCP开发基础(LLM 的输入输出机制与上下文表示)
  • 国内酒店网站建设厦门房产网
  • 【开题答辩过程】以《基于微信小程序垃圾分类图像识别技术实现》为例,不会开题答辩的可以进来看看
  • 区块链论文速读 CCF A--USENIX Security 2025(3)
  • 美食网站建设策划报告企业开展网络营销方案
  • 和田网站制作南约社区网站建设
  • 江西省住房和城乡建设部网站谷歌seo外链平台
  • 使用 windeployqt 工具自动部署Qt依赖环境(DLL、插件、翻译文件等)
  • RDPWD!WDWParseUserData函数分析之Loop through user data--非常重要
  • php教育视频网站开发织梦cms视频网站建设
  • 合肥网站优化平台最有实权的十大部门
  • 安徽湖滨建设集团有限公司网站宜春网站建设推广
  • 洞口网站建设常用的网页编辑工具有哪些
  • 单片机中的中断
  • 深圳网站设计 建设元程序员建网站
  • 小学校园网站建设要求做网站程序看什么书
  • 从0死磕全栈之深入理解 Next.js 中的 NextResponse:API 详解与实战示例
  • 彩票网站开发制作需要什么php网站接入支付宝
  • 如何做网站聚合页做普工招聘网站
  • LLM之Agent(二十四)| AI Agents上下文工程(Context Engineering)指南
  • 简述网站的四种常见结构网站用的服务器
  • 【大模型训练】zero2 梯度分片
  • 网站权重怎么看百度百科合作模式
  • 英文网站如何推广新手建站论坛
  • 瑞尔特(002790)2025年10月31日涨停分析报告
  • VTK开源视觉库 | 概述
  • css样式学习
  • 三大AI部署框架对比:本地权重与多模型协作实战
  • 中科大自适应推理具身导航框架!AdaNav:基于不确定性驱动自适应推理的视觉语言导航