news 2026/10/2 6:04:04

华为机考题:合并表记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为机考题:合并表记录

题目描述

数据表记录包含表索引index和数值value,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。

输入描述

先输入键值对的个数n,然后输入成对的index和value值,用空格隔开。

  • 1 ≤ n ≤ 500

  • 0 ≤ index ≤ 11111111

  • 1 ≤ value ≤ 100000

输出描述

输出合并后的键值对(多行),格式为index value,按index升序排列。

示例

输入:

text

4 0 1 0 2 1 3 3 4

输出:

text

0 3 1 3 3 4

说明:索引 0 出现两次,值 1 + 2 = 3;其余索引只出现一次。


C 语言解决方案

思路

由于index最大可达11111111(约一千万),直接用数组当桶会超内存(1000 万 × 4 字节 ≈ 40MB,勉强但偏大)。

更稳妥的做法:

  1. 用一个结构体数组存放(index, value)。

  2. 按index排序。

  3. 遍历排序后的数组,相邻相同index的值累加后输出。

这里使用qsort排序。

代码实现

c

#include <stdio.h> #include <stdlib.h> typedef struct { int index; int value; } Record; // qsort 的比较函数:按 index 升序 int cmp(const void *a, const void *b) { Record *ra = (Record *)a; Record *rb = (Record *)b; if (ra->index != rb->index) { return ra->index - rb->index; } return 0; } int main(void) { int n; scanf("%d", &n); Record recs[505]; for (int i = 0; i < n; i++) { scanf("%d %d", &recs[i].index, &recs[i].value); } // 按 index 升序排序 qsort(recs, n, sizeof(Record), cmp); // 遍历合并相邻相同 index 的记录 for (int i = 0; i < n; ) { int idx = recs[i].index; int sum = 0; int j = i; // 累加所有相同 index 的 value while (j < n && recs[j].index == idx) { sum += recs[j].value; j++; } printf("%d %d\n", idx, sum); i = j; // 跳过已处理的记录 } return 0; }

代码说明

步骤说明
结构体Record把 index 和 value 绑定在一起,便于整体排序
qsort+cmp按 index 升序排序,为后续合并做准备
内层while遇到相同 index 就累加,天然完成合并
i = j跳过已处理的所有相同 index 记录

复杂度分析

  • 时间复杂度:O(n log n),主要是排序的开销;合并遍历为 O(n)。

  • 空间复杂度:O(n),存储记录数组。

测试用例

输入输出
4
0 1
0 2
1 3
3 4
0 3
1 3
3 4
3
5 10
5 20
5 30
5 60
2
100 1
1 2
1 2
100 1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 6:02:28

韩国第一越南黑马,2025出境游趋势与实操解读

1. 开篇&#xff1a;当“去哪玩”从选择题变成了填空题今春出境游的数据榜单一出来&#xff0c;业内好几个群里都在刷同一句话&#xff1a;韩国第一&#xff0c;越南黑马。这件事放在两年前几乎没人敢想。2024年还在观望、还在比价的旅行者们&#xff0c;今年春季把票投给了两个…

作者头像 李华
网站建设 2026/10/2 6:02:12

PDF转PPT免费工具推荐!新手办公党直接抄作业

日常办公、学生做汇报、职场做述职&#xff0c;经常会遇到一个难题&#xff1a;拿到一份排版精致的PDF资料&#xff0c;想要改成PPT用来演讲展示&#xff0c;手动复制粘贴不仅耗时费力&#xff0c;还容易打乱原有排版、丢失图片和表格格式。很多人都在找靠谱的PDF转PPT免费工具…

作者头像 李华
网站建设 2026/10/2 6:01:37

甘肃省兰州甘肃全屋定制设计施工公司场景应用指南:先看施工准备

老旧小区选甘肃全屋定制设计施工公司&#xff0c;应优先核验其旧墙基层加固方案与类似项目记录&#xff0c;避免仅凭新房经验签约。这一判断适用于老旧小区改造场景&#xff0c;前提是公司能提供书面勘测报告和过往项目验收记录。首项核验旧墙基层加固方案。老旧小区墙面多为红…

作者头像 李华