题解 | 合并表记录

合并表记录

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);
    }

}

使用插入排序实现

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务