무엇이 가장 효율적인 방법의 필터링 배열에 따라 다른 내용의 배열?
-
03-07-2019 - |
문제
말 나는 두 가지 배열,항목 및 removeItems 고 내가 원하는 값에서 발견 removeItems 에서 제거되는 항목입니다.
무력 메커니즘을 수:
var animals = ["cow","dog","frog","cat","whale","salmon","zebra","tuna"];
var nonMammals = ["salmon","frog","tuna","spider"];
var mammals = [];
var isMammal;
for(var i=0;i<animals.length;i++){
isMammal = true;
for(var j=0;j<nonMammals;j++){
if(nonMammals[j] === animals[i]){
isMammal = false;
break;
}
}
if(isMammal){
mammals.push(animals[i]);
}
}
이것은 무엇입니까?O(N^2)?거기에 더 많은 효율적인 방법은?
해결책
실제로 O(M * N)
.
아마 당신이 할 수 있는 더 나은 정렬 animals
먼저 배열을 하는 이진 검색합니다.할 수 있을 줄일 O(N * log N)
-아는 경우 log N < M
어쨌든.
어쨌든,당신과 함께 작업 JS 고 실행되는 클라이언트 측면,다음을 시도를 유지하는 데이터의 양에 또는 그들의 브라우저는 소리에서 당신은 모든 요청을 합니다.
다른 팁
기본적으로 당신이하고 싶은 것은 세트 차이 S t를 효율적으로 계산하는 것입니다. 내가 아는 가장 빠른 방법은 t를 해시 맵 (| t | 단계)에 넣고 각 s를 s로 이동하는 것입니다 (제작 | s | 단계) t에서 s를 점검합니다 (O (1)). 따라서 O (| t | + | s |) 단계에 도달합니다.
제휴하지 않습니다 StackOverflow