找出非负数的从阵列的最大子阵列。 子阵列应该是连续的。也就是说,通过选择第二个和第四个元素并跳过第三个元素创建的子数组无效。获取分段错误(矢量声明)
最大子阵列在子阵列中的元素的总和来定义。如果sum(A)> sum(B),则子数组A大于子数组B.
这是我的解决方案:
vector<int> Solution::maxset(vector<int> &A) {
// Do not write main() function.
// Do not read input, instead use the arguments to the function.
// Do not print the output, instead return values as specified
// Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details
vector <int> bla;
int sum[100]={0};
int k = 0;
int j = 1;
for (int i =0; i < A.size(); i++){
if (A[i] > -1){
sum[k] = A[i] + sum[k];
}
else {
k++;
}
}
cout<<sum[0]<<" ";
cout<<sum[1]<<" ";
cout << sum[2] << " ";
int s = 0;
for (int i =0; i< 100; i++){
if (s < sum[i]){
s = sum[i];
k = i;
}
}
cout << s;
int count = 0;
for (int i =0; i < A.size(); i++){
if (A[i] < 0) {
count ++;
}
if (count == k) {
int j = i+1;
int x = 0;
while (A[j] > 0 && j< (A.size()-1)) {
// bla[x] = A[j];
x++;
j++;
}
}
}
return bla;
}
如果我取消线BLA [X] = A [j]时,我得到分割误差。有人可以解释如何解决这个错误?我在某处看到堆栈中没有足够的空间。我不明白如何。 谢谢
现在是学习如何使用调试器的时候。顺便说一句,你的代码是有缺陷的。 – WhiZTiM
当你定义一个没有特定大小的矢量时,它将是* empty *。其中的任何索引都将*超出界限*。 –
@Someprogrammerdude那么如果我不能为索引赋值,我该如何赋值给一个向量呢? –