這是問題的地址。 https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/爲什麼我的leetcode上的C代碼在運行代碼和提交之間有不同的行爲?
這是我的C代碼:
int removeDuplicates(int* nums, int numsSize) {
int* result;
int result_pointer = 0;
int allow_appearance = 2;
int appeared_number;
int i;
if (0 == numsSize) {
return 0;
}
result = (int*)malloc(numsSize * sizeof(int));
for (i = 0; i < numsSize; i++) {
appeared_number = 1;
result[result_pointer] = nums[i];
result_pointer += 1;
while (nums[i + 1] == nums[i]) {
i += 1;
if (appeared_number < allow_appearance) {
result[result_pointer] = nums[i];
result_pointer += 1;
appeared_number += 1;
}
}
}
for (i = 0; i < result_pointer; i++) {
nums[i] = result[i];
}
free(result);
return result_pointer;
}
測試數據: 測試用例1:[0,0,0,0,3](第158情況) 測試用例2:[ 0,0,1,1,1,2,2,2,3,3,4](第163個案例)
正確輸出: 測試案例1:[0,0,3] 測試情況2:[0,0,1,1,2,2,3,3,4]
當我點擊運行代碼,永遠沒問題,並且代碼在我的MacBook Pro上正確運行,使用gcc作爲編譯器,gdb作爲調試器。
然而,當我點擊提交解決方案時,它輸出測試用例1的[0,0,3,3]。然後我嘗試註釋掉代碼「free(result);」,它輸出[0 ,0,1,1,2,2,3,3,4,4]爲測試用例2.測試用例2在測試用例1後面,這意味着測試用例1在註釋掉代碼「free(結果);」。
看來我註釋掉的代碼與結果沒有關係,我的代碼出了什麼問題?
謝謝!
哦,yeah.It真是bug.I有固定它,謝謝! – Coordinate35