중복 된 요소가 두 개 이상인 경우 어떻게 배열에서 중복 된 항목을 찾을 수 있습니까? 어레이는 하나의 중복 원소중복 된 요소가 두 개 이상있는 경우 배열에서 중복 찾기
는(예 : 1, 2, 3, 4, 4, 4, 5, 6, 7)을 매우 간단하다
int duplicate(int* a, int s)
{
int x = a[0];
for(int i = 1; i < s; ++i)
{
x = x^a[i];
}
for(int i = 0; i < a[s]; ++i)
{
x = x^i;
}
return x;
}
그러나 만약 입력 배열에 복제 된 요소가 두 개 이상 포함되어 있으면 (예 : 1,2,2,3,4,4,4,5,6,7) 위의 코드는 작동하지 않습니다. O (n) 시간에 어떻게이 문제를 풀 수 있습니까?
배열이 정렬되어 있습니까? –
그래,하지만 흥미로운 경우와 배열이 정렬되지 않은 경우. –
여기에 뭐라구? 이 XOR 연산은 모두 무엇입니까? 그리고 왜 이상한 구문 ('a (s-1)'대신에'(a + s-1)')이 필요한가? –