找出非負數的從陣列的最大子陣列。 子陣列應該是連續的。也就是說,通過選擇第二個和第四個元素並跳過第三個元素創建的子數組無效。獲取分段錯誤(矢量聲明)
最大子陣列在子陣列中的元素的總和來定義。如果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那麼如果我不能爲索引賦值,我該如何賦值給一個向量呢? –