Leetcode ERROR: AddressSanitizer: heap-buffer-overflow on address错误

LeetCode数组越界错误

刚开始刷题LeetCode,遇见了一个问题,以26 删除重复元素为例,在自己电脑上怎么样都对,但是在leetcode运行过不去,因为leetcode对数组访问是否严格。
比如:

for(int i=0;i<numsSize;i++){
        if(nums[i]==nums[i+1]){
        }
    }

这个代码可能访问 numsSize上,所以越界,报错。

修改为:

for(int i=0;i<numsSize;i++){
        if(nums[i]==nums[i+1]&&i+1<numsSize ){
        }
    }

还是继续报错,虽热有限制 i+1,但是还是访问了,所以还是不行。

正确为:

for(int i=0;i<numsSize-1;i++){
        if(nums[i]==nums[i+1] ){
        }
    }

或者:

for(int i=0;i<numsSize;i++){
        if(i+1<numsSize && nums[i]==nums[i+1]){
        }
    }

这样也可以,因为&&条件 在计算第一个条件不符合的时候,不会计算第二个,不会出现越界。

LeetCode

你可能感兴趣的:(LeetCode)