avatar
求看代码 Plus One# JobHunting - 待字闺中
g*j
1
就是leetcode 里面的plus one, 为啥我把 那个如下return digits; 去掉之后,错误
说是这个?
Submission Result: Runtime Error
Last executed input: [1,0]
但是,我加上之后,就accpeted。 我知道为啥要加,但是,不懂如果不加为何这个
fail的case 过不去,还是runtime error,好像是segment 错误? 我在自己terminal
上测试是可
以过这个case的。百思不得其解,企盼赐教!
======================================
===
class Solution {
public:
vector plusOne(vector &digits) {
int size = digits.size();
if(size == 0) return digits;

int i = size - 1;

while( i >= 0 && digits[i] == 9) {
digits[i] = 0;
i--;
}

if( i < 0 ) {
digits.insert(digits.begin(),1);
//return digits;
}

digits[i] += 1;

return digits;
}
};
avatar
l*8
2
在i<0的时候访问digits[i]了

【在 g***j 的大作中提到】
: 就是leetcode 里面的plus one, 为啥我把 那个如下return digits; 去掉之后,错误
: 说是这个?
: Submission Result: Runtime Error
: Last executed input: [1,0]
: 但是,我加上之后,就accpeted。 我知道为啥要加,但是,不懂如果不加为何这个
: fail的case 过不去,还是runtime error,好像是segment 错误? 我在自己terminal
: 上测试是可
: 以过这个case的。百思不得其解,企盼赐教!
: ======================================
: ===

avatar
g*j
3
不是啊 如果输入是 1 0 ,while 结束后 i是1啊 不存在问题啊



【在 l*********8 的大作中提到】
: 在i<0的时候访问digits[i]了
avatar
g*j
4
我的疑问是为啥那个case过不了,还是run time error



【在 l*********8 的大作中提到】
: 在i<0的时候访问digits[i]了
avatar
l*8
5
可能是lc输出的问题。 segment fault时输出的是上一个case?

【在 g***j 的大作中提到】
: 我的疑问是为啥那个case过不了,还是run time error
:
:

avatar
m*n
6
为什么comment out 那个return? 你i <0 的时候,在倒数第二行,还做加一,能不错
吗?至少加个else吧。

terminal

【在 g***j 的大作中提到】
: 就是leetcode 里面的plus one, 为啥我把 那个如下return digits; 去掉之后,错误
: 说是这个?
: Submission Result: Runtime Error
: Last executed input: [1,0]
: 但是,我加上之后,就accpeted。 我知道为啥要加,但是,不懂如果不加为何这个
: fail的case 过不去,还是runtime error,好像是segment 错误? 我在自己terminal
: 上测试是可
: 以过这个case的。百思不得其解,企盼赐教!
: ======================================
: ===

avatar
g*j
7
帖子问的不是这个问题。



【在 m*****n 的大作中提到】
: 为什么comment out 那个return? 你i <0 的时候,在倒数第二行,还做加一,能不错
: 吗?至少加个else吧。
:
: terminal

avatar
g*j
8
只能这么理解了。

【在 l*********8 的大作中提到】
: 可能是lc输出的问题。 segment fault时输出的是上一个case?
avatar
t*h
9
你不是退役了么?怎么还在刷题啊?

terminal

【在 g***j 的大作中提到】
: 就是leetcode 里面的plus one, 为啥我把 那个如下return digits; 去掉之后,错误
: 说是这个?
: Submission Result: Runtime Error
: Last executed input: [1,0]
: 但是,我加上之后,就accpeted。 我知道为啥要加,但是,不懂如果不加为何这个
: fail的case 过不去,还是runtime error,好像是segment 错误? 我在自己terminal
: 上测试是可
: 以过这个case的。百思不得其解,企盼赐教!
: ======================================
: ===

avatar
i*e
10
真正导致 runtime error 的testcase 是上一个testcase [9],而不是 [1,0].
刚修复了这个问题,请你现在试试看。

terminal

【在 g***j 的大作中提到】
: 就是leetcode 里面的plus one, 为啥我把 那个如下return digits; 去掉之后,错误
: 说是这个?
: Submission Result: Runtime Error
: Last executed input: [1,0]
: 但是,我加上之后,就accpeted。 我知道为啥要加,但是,不懂如果不加为何这个
: fail的case 过不去,还是runtime error,好像是segment 错误? 我在自己terminal
: 上测试是可
: 以过这个case的。百思不得其解,企盼赐教!
: ======================================
: ===

avatar
g*j
11
现在好了!
可以问问为啥这个关于test case的bug发生了么?

【在 i**********e 的大作中提到】
: 真正导致 runtime error 的testcase 是上一个testcase [9],而不是 [1,0].
: 刚修复了这个问题,请你现在试试看。
:
: terminal

avatar
i*e
12
在C++ 的世界里,数组越界操作就是 undefined behavior,幸运的话数组越界的时候
立刻SEGFAULT,有可能运行完全没有问题,也有可能之后才产生的 SEGFAULT.
你这个情况是 output 的时候才产生了SEGFAULT,这个产生的概率应该是很小很小的。

【在 g***j 的大作中提到】
: 现在好了!
: 可以问问为啥这个关于test case的bug发生了么?

avatar
c*g
13
路过,没看明白,是digits[i] += 1; 越界了吧?

【在 i**********e 的大作中提到】
: 在C++ 的世界里,数组越界操作就是 undefined behavior,幸运的话数组越界的时候
: 立刻SEGFAULT,有可能运行完全没有问题,也有可能之后才产生的 SEGFAULT.
: 你这个情况是 output 的时候才产生了SEGFAULT,这个产生的概率应该是很小很小的。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。