Я пытался решить следующую проблему,Как удалить массив с отрицательными числами
Дан массив целых чисел, каждый элемент появляется в три раза, за исключением для одного. Найдите этот единственный.
Когда вход все положительны, я не буду получать какие-либо ошибки, но когда вход содержит отрицательные числа, линия 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'. Не знаю, решит ли это вашу проблему, но вам нужно сопоставить массив new с удалением массива. –
Какая ошибка? Вы не сказали нам сообщение об ошибке, которое вы получаете. –
Почему у вас даже есть массив 'int []'? 'Map' все что вам нужно для решения проблемы. –