我試圖解決以下問題的一個陣列,如何刪除與負整數
鑑於整數數組,每個元素出現,除了 一三次。找到那一個。
當輸入都是積極的,我不會得到任何錯誤,但是當輸入包含負整數,該行delete index;
會給錯誤,沒有任何人知道爲什麼嗎?
即
A[] = {1,2,3,4,1,2,3,4,1,3,4}
工作正常,但A[] = {-2,-2,1,1,-3,1,-3,-3,-4,-2}
沒有。
的代碼如下,
#include <iostream>
#include <map>
class Solution {
public:
int singleNumber(int A[], int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
int *index;
std::map<int, int> m;
index = new signed int[(n+1)/3];
int flag = 0;
int result;
for(int i=0; i<n; i++) {
if(m.find(A[i]) == m.end()) {
m[A[i]] = 1;
index[flag] = A[i];
flag++;
} else {
m[A[i]] = m[A[i]] + 1;
}
}
for(int i=0; i<(n+1)/3; i++) {
if(m[index[i]] != 3) {
result = index[i];
}
}
delete index;
return result;
}
};
int main()
{
Solution s;
int A[] = {1,2,3,4,1,2,3,4,1,3,4};
int result = s.singleNumber(A, 11);
std::cout <<result;
return 0;
}
使用delete [] index',而不是'delete index'。不知道這是否會解決你的問題,但你需要將array new與array delete匹配。 –
什麼是錯誤?你沒有告訴我們你收到的錯誤信息。 –
爲什麼你甚至有'int []'數組? 'map'是你需要解決的問題。 –