한 슬라이스가 다른 슬라이스의 하위 집합인지 효율적으로 결정하는 것은 프로그래밍에서 일반적인 문제입니다. 적절한 접근 방식이 없으면 비교를 위해 슬라이스의 각 요소를 반복하는 데 시간이 많이 걸릴 수 있습니다.
이 문제에 대한 효율적인 솔루션은 맵 데이터 구조를 활용합니다. . 작동 방식은 다음과 같습니다.
<code class="go">package main import "fmt" func subset(first, second []int) bool { set := make(map[int]int) for _, value := range second { set[value] += 1 } for _, value := range first { if count, found := set[value]; !found { return false } else if count < 1 { return false } else { set[value] = count - 1 } } return true } func main() { fmt.Println(subset([]int{1, 2, 3}, []int{1, 2, 3, 4})) // true fmt.Println(subset([]int{1, 2, 2}, []int{1, 2, 3, 4})) // false }</code>
이 접근 방식은 다음과 같습니다.
위 솔루션도 중복 값을 효과적으로 처리합니다. 예를 들어, 두 번째 슬라이스에는 단 하나의 2만 포함되어 있으므로 {1, 2, 2}는 {1, 2, 3, 4}의 하위 집합이 아닙니다. 코드는 맵의 개수를 추적하여 첫 번째 슬라이스에 더 이상 중복되지 않도록 합니다. 두 번째 슬라이스보다 요소가 많습니다.
위 내용은 Go에서 하나의 정수 슬라이스가 다른 정수 슬라이스의 하위 집합인지 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!