“不通过 您的代码已保存 段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
case通过率为0.00%”
老是碰到这样的报错,每次出现的问题也不一样,记录下来,持续更新。
1、短路效应
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]))
来源:CSDN
作者:但守恒
链接:https://blog.csdn.net/weixin_42687826/article/details/103848933