LeetCode常见报错解释

报错信息expected declaration or statement at end of input
中文解释:输入结尾应为声明或语句

你应该在你的代码中检查下面这三点

  1. 某一个函数或者变量是不是在使用之前没有声明。一般可能是你敲错了变量名。
  2. 某个地方是不是少了括号。这种情况,编译器一般会在最后一行代码报错,但错误很可能不在最后一行,要靠自己去找出来。
  3. 所提示句子中提到的函数的头文件没有加上。比如你用了math.h函数库里的函数,比如abs、sqrt、pow这些。

这是在写LeetCode-82.删除排序链表中的重复元素 II中遇到的问题
这是报错信息
部分错误的代码
-----------------------------------------------------------------------------------------------------------------------------------------------
报错信息==42==ERROR: AddressSanitizer: heap-buffer-overflow
中文解释:Address Sanitizer(ASan)是一个快速的内存错误检测工具。它所报告出的信息heap-buffer-overflow为堆缓冲区溢出。

你应该检查这一点

  1. 数组访问出错,即访问数组时越界,像大多数C、java、C++等语言,就是的数组下标为负数了或者超出预先分配的空间大小。

这是在写LeetCode上的剑指 Offer 30. 包含min函数的栈题中遇到的问题,作为刷题经验的记录。
含有min函数的栈
报错点:在入栈一些元素后再连续出栈这些元素后,此时栈中没有元素时,当前栈中最小值minCur不存在,这个时候需要特判if(obj->top1 == 0) obj->minCur = 0·
-----------------------------------------------------------------------------------------------------------------------------------------------
报错信息warning: operator '>>' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses] int mid = l + r >> 1
中文解释:我们知道加号+的优先级高于右移>>,所以l + r >> 1应该是没有错误的呀,确实是这样的,所以遇到这种报错信息是提示正确的,但是它提出warning了我们需要查找与它相关的表达式。

所以你应该

  1. 需要查找与报错信息但是报错信息中是正确的表达式相关的表达式(有点拗口,请看实例)。

这是在写LeetCode上932. 排序数组题中遇到的问题,作为刷题经验的记录。
排序数组
报错点:在归并函数内部递归调用本身时,由于初始定义的megert_sort中多打了一个t,但是内部调用的是正确的写法meger_sort,所以是拼写错位导致的bug,遇到这种情况检查是不是变量名、函数调用错误就好了。
-总结: 这里可以看到最下面的报错信息提示了,merger_sort没有声明,但是这种情况应该先保出这一行的错误,但是偏偏报了不相关的地方,就算作经验来看吧📝。
bug信息

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值