桶排思想,为什么会编译失败,求指教
bool containsDuplicate(int* nums, int numsSize){
int i;
int a[50000000]={0};//保存正数
int b[50000000]={0}; //保存负数
for(i=0;i<numsSize;i++){
if(nums[i]>=0){
if(a[nums[i]]==0)a[nums[i]]=1;
else return true;
}
if(nums[i]<=0){
if(b[abs(nums[i])]==0)b[abs(nums[i])]=1;
else return true;
}
}
return false;
}
编译结果为
第3行最末尾处';’分号是中文的,应修改为:';' 英文半角分号。
根据题意,数组的大小为 10^5,代码里定义的数组太大了,所以第3 、4行修改为:
int a[500001] = { 0 };//;修改分号 //保存正数
int b[500001] = { 0 }; //保存负数