簡體   English   中英

測試案例中的細分錯誤

[英]Segmentation fault in test cases

因此,問題如下:給定任意整數數組(合理地大),返回數組中任意兩個元素之間的最大差,以使較大的元素比較小的元素出現在更高的索引處。 如果找不到這樣的對,則返回-1。 例:

7 2 3 10 2 4 8 1

其中第一個元素是數組的大小(或輸入的行數),其余元素是元素。 上面的示例輸出為8(10-2)。

我的代碼如下:

int A[20],size;

scanf("%d",&size);
for(int i=0;i<size;i++){
scanf("%d\n",&A[i]);
}
int diff = A[1]-A[0];
int currsum = diff;
int maxsum = currsum;

for(int i=1; i<size-1; i++)
{
    // Calculate current difference for the loop
    diff = A[i+1]-A[i];

    // Calculate current sum for the loop
    if (currsum > 0)
       currsum += diff;
    else
       currsum = diff;

    // Update max sum(if needed)
    if (currsum > maxsum)
       maxsum = currsum;
}

printf("%d",maxsum);

這是Hackerrank的一個問題,但是在10個可能的測試用例中,只有3個可以運行。 其余案例返回分段錯誤。 任何想法都會有所幫助。

如評論中所述,您已經聲明A僅容納20個整數。 但是問題最多可以發送1,000,000個整數。 那是錯誤!

使用指針使其變得更加重要。 首先A聲明為整數指針,然后讀取數組的第一個元素,使用該整數可以為數組A動態分配內存( malloc()calloc()函數)。 因此A的大小會動態變化,您可以根據第一個元素的功能對其進行調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM