题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
#include <stdio.h> int main() { int n, i, a[11111112], b[11111112],c[11111112]; scanf("%d\n", &n); for(i=0; i<n; i++){ scanf("%d %d\n", &a[i], &b[i]); // printf("%d %d\n", a[i], b[i]); } for(i=0; i<n; i++){ c[a[i]]+=b[i]; //新数组c 序号:a[i],值b[i] } for(i=0; i<11111112; i++){ if(c[i]){ printf("%d %d\n", i, c[i]); } } return 0; //解法二简单点的 代码优化 // int n, i, a[11111112], index ,value; // scanf("%d\n", &n); // for(i=0; i<n; i++){ // scanf("%d %d\n", &index, &value); // // printf("%d %d\n", index, value); // a[index]+=value; // // printf("%d %d\n", index, a[index]); // } // printf("%d\n", a[11111110]); // for(i=0; i<11111112; i++){ // if(a[i]){ // printf("%d %d\n", i, a[i]); // } // } return 0; }
第一种解法可以完美运行通过,且不会超过内存。
但是想优化下换成第二种就超过内存无法运行通过了,不知道是原因,有大佬帮忙看看吗?