"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 한 조각의 정수 한 조각이 맵을 사용하여 GO에서 다른 한 조각의 하위 집합인지 효율적으로 결정할 수 있습니까?

한 조각의 정수 한 조각이 맵을 사용하여 GO에서 다른 한 조각의 하위 집합인지 효율적으로 결정할 수 있습니까?

2025-03-25에 게시되었습니다
검색:153

How can I efficiently determine if one slice of integers is a subset of another in Go using a map?

서브 세트 정의

는 후자의 모든 요소가 포함되어있는 경우 다른 부분의 하위 집합으로 간주됩니다. 예를 들어, {1, 2, 3}은 {1, 2, 3, 4}의 하위 집합이며 {1, 2, 2}는 {1, 2, 3, 4}

의 하위 집합이 아닙니다. 두 번째 슬라이스에서 맵을 구성하고 각 요소는 값으로 계산됩니다. 그 후, 첫 번째 슬라이스를 통해 반복하고지도에서 각 요소의 존재를 확인합니다. 모든 요소가 충분한 복제물로 발견되면 첫 번째 슬라이스는 서브 세트로 간주됩니다.

샘플 코드

import "fmt"

// subset returns true if the first array is completely
// contained in the second array. There must be at least
// the same number of duplicate values in second as there
// are in first.
func subset(first, second []int) bool {
    set := make(map[int]int)
    for _, value := range second {
        set[value]  
    }

    for _, value := range first {
        if count, ok := set[value]; !ok {
            return false
        } else if count  

output

true False
true
false

결론

이 맵 기반 솔루션은 하나의 정수 슬라이스가 다른 정수 슬라이스의 하위 집합인지를 효율적으로 결정하여 잠재적 중복 값을 처리합니다. 이 일반적인 문제를 해결하기위한 최적화 된 접근법을 제공합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3