Go에서 정수 슬라이스를 사용한 효율적인 하위 집합 검사
한 슬라이스가 다른 슬라이스의 하위 집합인지 확인하는 것은 일반적인 프로그래밍 작업입니다. 슬라이스를 반복하는 것은 간단한 접근 방식이지만 보다 효율적인 방법을 탐색하는 것이 좋습니다.
효과적인 솔루션 중 하나는 맵 데이터 구조를 활용하는 것입니다. 이 기술은 더 큰 조각의 요소를 키로, 해당 빈도를 값으로 사용하여 맵을 만듭니다. 그 후, 더 작은 조각의 요소를 맵과 비교하여 확인합니다. 지도에서 모든 요소가 충분한 빈도로 발견되면 더 작은 조각이 더 큰 조각의 하위 집합으로 간주됩니다.
Go의 구현 예:
<code class="go">package main import "fmt" func subset(first, second []int) bool { set := make(map[int]int) for _, value := range second { set[value]++ } for _, value := range first { if count, found := set[value]; !found { return false } else if count < 1 { return false } else { set[value]-- } } 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>
이 접근 방식은 다음을 효율적으로 확인합니다. O(n) 시간 안에 하위 집합을 생성합니다. 여기서 n은 더 큰 조각의 길이입니다. 이러한 시나리오에서 일반적인 요구 사항인 중복 값을 효과적으로 처리합니다.
위 내용은 Go에서 정수 슬라이스가 있는 하위 집합을 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!