有关桶排查重的问题(入门)

桶排思想,为什么会编译失败,求指教

img

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;

}


编译结果为

img

第3行最末尾处';’分号是中文的,应修改为:';' 英文半角分号。
根据题意,数组的大小为 10^5,代码里定义的数组太大了,所以第3 、4行修改为:
int a[500001] = { 0 };//;修改分号 //保存正数
int b[500001] = { 0 }; //保存负数