순서를 무시하고 중복을 허용하여 두 목록의 동등성을 효율적으로 비교하려면 어떻게 해야 합니까?
목록 비교
이 문서에서는 두 List
초기계획
정확한 동일성을 보장하려면, 즉 두 목록에 동일한 요소와 빈도가 포함되어 있으므로 비교하기 전에 목록을 정렬하는 것이 좋습니다.
Enumerable.SequenceEqual(list1.OrderBy(t => t), list2.OrderBy(t => t))
최적화 계획
그러나 성능을 향상시키기 위해 누군가 다른 솔루션을 제안했습니다.
public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2) { var cnt = new Dictionary<T, int>(); foreach (T s in list1) { if (cnt.ContainsKey(s)) { cnt[s]++; } else { cnt.Add(s, 1); } } foreach (T s in list2) { if (cnt.ContainsKey(s)) { cnt[s]--; } else { return false; } } return cnt.Values.All(c => c == 0); }
이 방법의 성능은 초기 솔루션보다 훨씬 우수합니다. IEquatable
인터페이스가 필요하지 않고 IComparable
인터페이스만 필요합니다.
다양한 데이터 유형 처리
다양한 데이터 유형(null 허용 유형 포함)을 키로 포함하는 상황에 적응하기 위해 향상된 솔루션을 사용할 수 있습니다.
public static bool ScrambledEquals<T>(IEnumerable<T> list1, IEnumerable<T> list2, IEqualityComparer<T> comparer) { var cnt = new Dictionary<T, int>(comparer); ... }
위 내용은 순서를 무시하고 중복을 허용하여 두 목록의 동등성을 효율적으로 비교하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어 함수에 의해 반환 된 값 유형은 무엇입니까? 반환 값을 결정하는 것은 무엇입니까?

STL (정렬, 찾기, 변환 등)의 알고리즘을 효율적으로 사용하려면 어떻게합니까?
