题解 | #合并表记录#
合并表记录
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;
}
第一种解法可以完美运行通过,且不会超过内存。
但是想优化下换成第二种就超过内存无法运行通过了,不知道是原因,有大佬帮忙看看吗?

