주어진 쌍의 숫자 목록에서 연결 해제 번호를 찾는 알고리즘이 있습니까? 예를 들어 {(1,2), (2,3), (3,4)} 쌍 (1,3)과 (2,4)는 한 번도 쌍을 이루지 못했습니다.주어진 숫자 쌍에서 연결되지 않은 숫자 찾기
0
A
답변
4
당신은 다음과 같이이 작업을 수행 할 수있는 모든 쌍 이상
- 반복 처리를하고 세트에 나타나는 모든 숫자의 집합을 구축 할 수 있습니다.
- 숫자의 가능한 모든 쌍을 구성하여 결과를 다른 집합에 저장합니다.
- 원래 목록에서 모든 쌍을 반복하고 모든 쌍의 집합에서 찾은 각각을 제거하십시오.
- 이제 원래 세트에 표시되지 않은 모든 쌍이 남았습니다.
물론 이것은 원래 세트의 값 쌍에만 관심이 있다고 가정합니다. 예를 들어, 쌍 (1, 5)도 귀하의 예가 아닙니다. 어느 쪽도 아니었다 (고양이, 개).
이것은 시간 O (n)에서 실행됩니다. 여기서 n은 원래 쌍의 쌍에 표시된 숫자의 수입니다.
희망이 도움이됩니다. LINQ와 사실상 대칭 트릭 촬영을 이용하여
0
(1,3) 및 (3,1)가 제 2 번호가 상기 제보다 크다 동일하므로 무시하는 경우 있음 :
public static IEnumerable<Tuple<int, int>> GetUnpairedNumbers(IEnumerable<Tuple<int, int>> existingPairs) {
var uniqueNumbers = existingPairs.SelectMany(p => new[] {p.Item1, p.Item2}).Distinct().ToList();
var isUsed = uniqueNumbers.ToDictionary(n => n, n => uniqueNumbers.Where(inner => n < inner).ToDictionary(inner => inner, inner => false));
foreach(var currentPair in existingPairs) {
isUsed[currentPair.Item1][currentPair.Item2] = true;
}
return isUsed.Keys.SelectMany(n => isUsed[n].Where(kvp => !kvp.Value).Select(kvp => Tuple.Create(n, kvp.Key)));
}
public static void Main(string[] args) {
var unpairedNumbers = GetUnpairedNumbers(new[] { P(1, 2), P(2, 3), P(3, 4) });
}
private static Tuple<int, int> P(int a, int b) {
return Tuple.Create(a, b);
}
은
관련 문제
- 1. 주어진 범위에서 숫자 찾기?
- 2. 주어진 범위에서 누락 된 숫자 찾기
- 3. 주어진 숫자에서 숫자 찾기 및 제거
- 4. 주어진 정수의 2 자리 숫자
- 5. 배열의 연속 숫자 찾기
- 6. 찾기 숫자 그룹
- 7. 합성 숫자 찾기
- 8. ArrayList에서 숫자 찾기
- 9. 집합에없는 숫자 찾기
- 10. 파이썬을 사용하여 문자열에서 숫자 찾기
- 11. 두 숫자 사이의 소수 찾기
- 12. 주어진 숫자 다음에 소수 검색하기
- 13. Entity Framework에서 주어진 숫자 주변의 숫자 값을 쿼리하려면 어떻게합니까?
- 14. 문자열의 시작 부분에 주어진 기호의 정확한 숫자 찾기
- 15. 주어진 std :: set에없는 [a, b] 범위의 모든 숫자 찾기 S
- 16. 주어진 숫자 K와 정렬 된 숫자 세트. 나누는 집합에 숫자가 있는지 찾기
- 17. Jquery 찾기 및 바꾸기 숫자
- 18. Reg exp를 사용하여 숫자 찾기
- 19. Java의 숫자 목록에서 평균 찾기
- 20. 소수의 n 번째 숫자 찾기
- 21. txt 파일의 모든 숫자 찾기
- 22. 셀에 8 자리 숫자 찾기
- 23. C에서 숫자 문자의 값 찾기 #
- 24. 그룹 (배열)에서 숫자 찾기
- 25. UITextView에서 문자의 다중 숫자 찾기
- 26. 숫자 생성을위한 숫자 논리 프로그램
- 27. 숫자 앞에 0이없는 숫자
- 28. (숫자) & (- 숫자)의 의미
- 29. 숫자
- 30. C에서 완벽한 숫자 찾기 - 컴파일 오류