C++牛客网编程踩坑记录

梦想与她 提交于 2020-01-28 17:14:23

“不通过 您的代码已保存 段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
case通过率为0.00%”

老是碰到这样的报错,每次出现的问题也不一样,记录下来,持续更新。
在这里插入图片描述

1、短路效应

参考:c++ || && 逻辑短路问题

deque<int> qi;
while((num[qi.back()] <= num[i]) && qi.size())

这句话这么写就会报上述错误,而将逻辑与两端的调换一下就没有问题了。
这是因为当逻辑与前方的语句判断为0时,就会直接跳过,而不去执行后半段语句,如果qi为空的话,上述的语句就会因为取qi.back()下标越界而报错,如果调换之后由于短路效应,先判断了qi.size()从而当qi为空时直接跳过后半句而不会报错。
正确写法:

while(qi.size() && (num[qi.back()] <= num[i]))
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!