本题测试数据和题意不匹配
2020.10.17记录,后续牛客会不会改测试数据不知道
一、用哈希进行排序
#include<bits/stdc++.h> using namespace std; int _hash[5000+5]; int main() { int n,m; while( ~scanf("%d%d",&n,&m) ) { memset(_hash,0,sizeof(_hash)); for(int i=0 ;i<n; ++i) { int temp; scanf("%d",&temp); _hash[temp]++; } for(int i=0 ;i<m; ++i) { int temp; scanf("%d",&temp); _hash[temp]++; } for(int i=0 ;i<5005; ++i) { while( _hash[i]-- ) { printf("%d ",i); } } printf("\n"); } return 0; }
提交显示
段错误 Case:90%
然后,我就纳闷了,哈希没有数组越界,而且很显然这么简单的代码没错
后面想了想,除非题目说的
n个整数(范围1~5000)
这句话有误,才可能导致我的哈希数组越界,然后,我就只能猜。。。是不是5000少打了个0,然后,改50005的哈希数组,AC了
二、最终AC代码
#include<bits/stdc++.h> using namespace std; int _hash[500005]; int main() { int n,m; while( ~scanf("%d%d",&n,&m) ) { memset(_hash,0,sizeof(_hash)); for(int i=0 ;i<n; ++i) { int temp; scanf("%d",&temp); _hash[temp]++; } for(int i=0 ;i<m; ++i) { int temp; scanf("%d",&temp); _hash[temp]++; } for(int i=1 ;i<50001; ++i) { while( _hash[i]-- ) { printf("%d ",i); } } printf("\n"); } return 0; }