최근에 두 배열 을 병합 하고 중복을 제거하는 StackOverflow 에서이 Javascript 코드를 보았습니다 .
Array.prototype.unique = function() {
var a = this.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i] === a[j])
a.splice(j--, 1);
}
}
return a;
};
var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
var array3 = array1.concat(array2).unique();
이 코드는 작동하지만 끔찍하게 비효율적입니다 ( O(n^2)
). 복잡성이 적은 알고리즘을 만드는 것이 과제입니다.
당첨 기준은 복잡성 이 가장 적은 솔루션 이지만 문자의 길이가 가장 짧아서 관련성이 떨어집니다.
요구 사항 :
다음 "정확성"요구 사항을 충족하는 함수로 모든 코드를 함께 패키지하십시오.
- 입력 : 2 개의 배열
- 출력 : 하나의 배열
- 두 배열의 요소를 함께 병합-입력 배열의 모든 요소는 출력 배열에 있어야합니다.
- 출력 된 배열에는 중복이 없어야합니다.
- 순서는 중요하지 않습니다 (원래와 달리)
- 모든 언어 수
- 고유성을 감지하거나 세트 / 배열을 병합하기 위해 표준 라이브러리의 배열 함수를 사용하지 마십시오 (표준 라이브러리의 다른 항목은 괜찮음). 배열 연결은 훌륭하지만 위의 모든 기능을 수행하는 기능은 그렇지 않다는 점을 구별하겠습니다.
[1, 2, 2, 3]
및 [2, 3, 4]
반환 [1, 2, 2, 3, 4]
또는 [1, 2, 3, 4]
?