题解 | #合并表记录#

合并表记录

https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct hash_s{
    int key;
    int value;
}hash_t;

int compare_fun(const void *arg1, const void *arg2)
{
    hash_t *tmp1, *tmp2;

    tmp1 = (hash_t *)arg1;
    tmp2 = (hash_t *)arg2;
    //printf("k1[%d], v[%d]    k[%d], v[%d] \n", tmp1->key, tmp1->value, tmp2->key, tmp2->value);

    return tmp1->key - tmp2->key;
}
int main() {
    int n, i;

    hash_t map[500];

    memset(map, 0, sizeof(hash_t) * 500);

    scanf("%d", &n);

    /* 输入 */
    for(i = 0; i < n; i++){
       scanf("%d %d", &map[i].key, &map[i].value);
       //printf("%d %d\n", map[i].key, map[i].value);
    }

    /* 快排 */
    qsort(map, n, sizeof(hash_t), compare_fun);

    for(i = 0; i < n; i++){
       //printf("%d %d\n", map[i].key, map[i].value);
    }

    /* 合并,相同的存在后面一个,最后一个单独打印 */
    for(i = 1; i < n; i++) {
        if (map[i-1].key == map[i].key) {
            map[i].value += map[i-1].value;
        } else {
            printf("%d %d\n", map[i-1].key, map[i-1].value);
        }
    }
    printf("%d %d\n", map[n-1].key, map[n-1].value);


    return 0;
}

全部评论

相关推荐

Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务