题解 | 合并表记录
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <stdio.h>
struct dates {
int index;
int value;
};
int main() {
struct dates arr[250] = {{0, 0}};
int len = 0; //数组末尾索引
int n;
scanf("%d", &n);
struct dates date;
for (int i = 0; i < n; i++) {
scanf("%d %d", &date.index, &date.value);
if (i == 0) { //直接将第一组数据存入数组
arr[0].index = date.index;
arr[0].value = date.value;
continue;
}
register int pre = len; //应该插入的位置
if (date.index < arr[pre].index) {
while (date.index <= arr[pre - 1].index &&
pre > 0) { //找到date应该插入的位置
pre--;
}
if (date.index <
arr[pre].index) { //索引不想等,就让后面的数据后移
int t = len;
while (t >= pre) {
arr[t + 1] = arr[t];
t--;
}
len++;
arr[pre].value = 0;
}
} else if (date.index > arr[pre].index) {
pre++;
len++;
}
arr[pre].index = date.index; //存入数据
arr[pre].value += date.value;
}
for (int i = 0; i <= len; i++) { //打印数据
printf("%d %d\n", arr[i].index, arr[i].value);
}
}
使用插入排序实现