세트
12471 단어 algorithmsgogithubcomputerscience
armazenar valores únicos sem qualquer ordem specific.
아니요 실제, os 채팅과 대화의 대화에 참여하는 블로그의 게시물을 태그로 설정합니다.
세그레도, como queremos uma estrutura que não permitta dados duplicados vamos basear a esttrutura do set em uma outra estrutura do golang chamada map que é baseada em hash, um conjunto de chave valor.
Então definimos o segundo tipo de dados como boleano, assim sendo possível fazer comparações de true e false entre os valores.
type Set struct {
estrutura map[int]bool
}
func (set *Set) Criar() {
set.estrutura = make(map[int]bool)
}
삽입 방법
O método AddValor adiciona o valor a um Set.
승인 절차는 PossuiValor para verificar se existe o valor dentro do set.
베르다데이로 설정을 위해 메토도 não를 수행하십시오. 설정에 대한 정의를 내리십시오.
func (set *Set) AddValor(valor int) {
if !set.PossuiValor(valor) {
set.estrutura[valor] = true
}
}
삭제 방법
Aqui éreproveitado o delete do próprio map da sdtlib do Golang então a implementationação é minima.
func (set *Set) DeletaValor(valor int) {
delete(set.estrutura, valor)
}
조회 방법
O método PossuiValor do Set verifica se o valor existe ou não em set.estrutura e retorna um boolean com a resposta.
Definimos localizado como um boolean, o zaro value dele é false
Esse underline cheguei a comentar antes, mas ele anula o valor de uma variável, no caso aqui ele é anula o valor inteiro de set.estrutura para que a comparação possa ser feita apenas com o os boleanos.
func (set *Set) PossuiValor(valor int) bool {
var localizado bool
_, localizado = set.estrutura[valor]
return localizado
}
InterSect 메서드
No codigo a seguir, o método CruzarCom retorna um setCruzado que consise na interseção de set e setDiferente.
Instanciamos um set que será o retorno da interseção, em seguida fazemos um loop ao longo da esttrutura já existente verificando apenas os valores, e anulando o segundo parametro do map que seria o boleano
PossuiValor no parametro para fazer a comparação e com o valor da condição reutilizamos AddValor para inserir o valor no set que instanciamos.
func (set *Set) CruzarCom(setDiferente *Set) *Set {
var setCruzado = &Set{}
setCruzado.Criar()
var valor int
for valor, _ = range set.estrutura {
if setDiferente.PossuiValor(valor) {
setCruzado.AddValor(valor)
}
}
return setCruzado
}
유니온 방식
O método UnirCom retorna um setReunido que coniste em uma união de set e setDifferente.
Instanciamos setReunido que será o retorno. E reutilizamos AddValor percorrendo o set original e o set no parametro inserindo os valores no set instanciado.
func (set *Set) UnirCom(setDiferente *Set) *Set {
var setReunido = &Set{}
setReunido.Criar()
var valor int
for valor, _ = range set.estrutura {
setReunido.AddValor(valor)
}
for valor, _ = range setDiferente.estrutura {
setReunido.AddValor(valor)
}
return setReunido
}
주요 방법
Utilizando a estrutura set na main func.
func main() {
var set *Set
set = &Set{}
set.Criar()
set.AddValor(1)
set.AddValor(2)
fmt.Println("set inicial", set)
fmt.Println(set.PossuiValor(1))
var setDiferente *Set
setDiferente = &Set{}
setDiferente.Criar()
setDiferente.AddValor(2)
setDiferente.AddValor(4)
setDiferente.AddValor(5)
fmt.Println("outro set", set)
fmt.Println("cruzamento de sets", set.CruzarCom(setDiferente))
fmt.Println("união de sets", set.UnirCom(setDiferente))
}
산출:
set inicial &{map[1:true 2:true]}
true
outro set &{map[1:true 2:true]}
cruzamento de sets &{map[2:true]}
união de sets &{map[1:true 2:true 4:true 5:true]}
Reference
이 문제에 관하여(세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/vapordev/sets-59ge
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func (set *Set) AddValor(valor int) {
if !set.PossuiValor(valor) {
set.estrutura[valor] = true
}
}
Aqui éreproveitado o delete do próprio map da sdtlib do Golang então a implementationação é minima.
func (set *Set) DeletaValor(valor int) {
delete(set.estrutura, valor)
}
조회 방법
O método PossuiValor do Set verifica se o valor existe ou não em set.estrutura e retorna um boolean com a resposta.
Definimos localizado como um boolean, o zaro value dele é false
Esse underline cheguei a comentar antes, mas ele anula o valor de uma variável, no caso aqui ele é anula o valor inteiro de set.estrutura para que a comparação possa ser feita apenas com o os boleanos.
func (set *Set) PossuiValor(valor int) bool {
var localizado bool
_, localizado = set.estrutura[valor]
return localizado
}
InterSect 메서드
No codigo a seguir, o método CruzarCom retorna um setCruzado que consise na interseção de set e setDiferente.
Instanciamos um set que será o retorno da interseção, em seguida fazemos um loop ao longo da esttrutura já existente verificando apenas os valores, e anulando o segundo parametro do map que seria o boleano
PossuiValor no parametro para fazer a comparação e com o valor da condição reutilizamos AddValor para inserir o valor no set que instanciamos.
func (set *Set) CruzarCom(setDiferente *Set) *Set {
var setCruzado = &Set{}
setCruzado.Criar()
var valor int
for valor, _ = range set.estrutura {
if setDiferente.PossuiValor(valor) {
setCruzado.AddValor(valor)
}
}
return setCruzado
}
유니온 방식
O método UnirCom retorna um setReunido que coniste em uma união de set e setDifferente.
Instanciamos setReunido que será o retorno. E reutilizamos AddValor percorrendo o set original e o set no parametro inserindo os valores no set instanciado.
func (set *Set) UnirCom(setDiferente *Set) *Set {
var setReunido = &Set{}
setReunido.Criar()
var valor int
for valor, _ = range set.estrutura {
setReunido.AddValor(valor)
}
for valor, _ = range setDiferente.estrutura {
setReunido.AddValor(valor)
}
return setReunido
}
주요 방법
Utilizando a estrutura set na main func.
func main() {
var set *Set
set = &Set{}
set.Criar()
set.AddValor(1)
set.AddValor(2)
fmt.Println("set inicial", set)
fmt.Println(set.PossuiValor(1))
var setDiferente *Set
setDiferente = &Set{}
setDiferente.Criar()
setDiferente.AddValor(2)
setDiferente.AddValor(4)
setDiferente.AddValor(5)
fmt.Println("outro set", set)
fmt.Println("cruzamento de sets", set.CruzarCom(setDiferente))
fmt.Println("união de sets", set.UnirCom(setDiferente))
}
산출:
set inicial &{map[1:true 2:true]}
true
outro set &{map[1:true 2:true]}
cruzamento de sets &{map[2:true]}
união de sets &{map[1:true 2:true 4:true 5:true]}
Reference
이 문제에 관하여(세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/vapordev/sets-59ge
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func (set *Set) PossuiValor(valor int) bool {
var localizado bool
_, localizado = set.estrutura[valor]
return localizado
}
No codigo a seguir, o método CruzarCom retorna um setCruzado que consise na interseção de set e setDiferente.
Instanciamos um set que será o retorno da interseção, em seguida fazemos um loop ao longo da esttrutura já existente verificando apenas os valores, e anulando o segundo parametro do map que seria o boleano
PossuiValor no parametro para fazer a comparação e com o valor da condição reutilizamos AddValor para inserir o valor no set que instanciamos.
func (set *Set) CruzarCom(setDiferente *Set) *Set {
var setCruzado = &Set{}
setCruzado.Criar()
var valor int
for valor, _ = range set.estrutura {
if setDiferente.PossuiValor(valor) {
setCruzado.AddValor(valor)
}
}
return setCruzado
}
유니온 방식
O método UnirCom retorna um setReunido que coniste em uma união de set e setDifferente.
Instanciamos setReunido que será o retorno. E reutilizamos AddValor percorrendo o set original e o set no parametro inserindo os valores no set instanciado.
func (set *Set) UnirCom(setDiferente *Set) *Set {
var setReunido = &Set{}
setReunido.Criar()
var valor int
for valor, _ = range set.estrutura {
setReunido.AddValor(valor)
}
for valor, _ = range setDiferente.estrutura {
setReunido.AddValor(valor)
}
return setReunido
}
주요 방법
Utilizando a estrutura set na main func.
func main() {
var set *Set
set = &Set{}
set.Criar()
set.AddValor(1)
set.AddValor(2)
fmt.Println("set inicial", set)
fmt.Println(set.PossuiValor(1))
var setDiferente *Set
setDiferente = &Set{}
setDiferente.Criar()
setDiferente.AddValor(2)
setDiferente.AddValor(4)
setDiferente.AddValor(5)
fmt.Println("outro set", set)
fmt.Println("cruzamento de sets", set.CruzarCom(setDiferente))
fmt.Println("união de sets", set.UnirCom(setDiferente))
}
산출:
set inicial &{map[1:true 2:true]}
true
outro set &{map[1:true 2:true]}
cruzamento de sets &{map[2:true]}
união de sets &{map[1:true 2:true 4:true 5:true]}
Reference
이 문제에 관하여(세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/vapordev/sets-59ge
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func (set *Set) UnirCom(setDiferente *Set) *Set {
var setReunido = &Set{}
setReunido.Criar()
var valor int
for valor, _ = range set.estrutura {
setReunido.AddValor(valor)
}
for valor, _ = range setDiferente.estrutura {
setReunido.AddValor(valor)
}
return setReunido
}
Utilizando a estrutura set na main func.
func main() {
var set *Set
set = &Set{}
set.Criar()
set.AddValor(1)
set.AddValor(2)
fmt.Println("set inicial", set)
fmt.Println(set.PossuiValor(1))
var setDiferente *Set
setDiferente = &Set{}
setDiferente.Criar()
setDiferente.AddValor(2)
setDiferente.AddValor(4)
setDiferente.AddValor(5)
fmt.Println("outro set", set)
fmt.Println("cruzamento de sets", set.CruzarCom(setDiferente))
fmt.Println("união de sets", set.UnirCom(setDiferente))
}
산출:
set inicial &{map[1:true 2:true]}
true
outro set &{map[1:true 2:true]}
cruzamento de sets &{map[2:true]}
união de sets &{map[1:true 2:true 4:true 5:true]}
Reference
이 문제에 관하여(세트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vapordev/sets-59ge텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)