"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > SET em JavaScript (tutorial para iniciantes)

SET em JavaScript (tutorial para iniciantes)

Publicado em 2024-11-04
Navegar:593

SET in JavaScript (Tutorial for Beginners)

Olá,

Você está procurando uma estrutura de dados que armazene valores exclusivos, permita inserir valores, encontrar o número total de valores e excluir valores? A escolha perfeita para isso é um Conjunto. Muitas linguagens de programação incluem uma estrutura de dados Set integrada, e JavaScript não é exceção. Vamos nos aprofundar em como os Sets funcionam.

O que está definido?
O Set é uma estrutura de dados que permite armazenar valores únicos de qualquer tipo, sejam valores primitivos ou referências de objetos. O conjunto permite inserir, excluir, atualizar e dimensionar operações com complexidade de tempo O(1). O que torna a configuração mais rápida e eficiente.

Os conjuntos são projetados para fornecer tempos de acesso rápidos. Eles geralmente são implementados de uma forma que torna a procura de itens mais rápida do que simplesmente verificar cada item um por um. A implementação típica pode ser uma tabela hash (pesquisa O(1)) ou uma árvore de pesquisa (pesquisa O(log(N))).

Pontos-chave

  • Acesso rápido: os conjuntos fornecem acesso rápido aos elementos.
  • Implementação: Geralmente implementada usando tabelas hash ou árvores de pesquisa.
  • Tempo de pesquisa: o tempo médio de pesquisa é melhor que O(N), geralmente O(1) ou O(log(N)).

Métodos Básicos

  1. add: adicionará um elemento ao conjunto. Se o elemento estiver presente no set, ele não fará nada.
  2. has: retornará verdadeiro se o elemento estiver presente no conjunto, caso contrário, será falso.
  3. size : retornará o tamanho do conjunto.
  4. delete: removerá o elemento do conjunto.
  5. keys: O método .keys() em um conjunto JavaScript retorna um novo objeto iterador que contém os valores do conjunto na ordem em que foram inseridos.

Exemplos

// 1. Create a new Set and use the .add() method to add elements
const mySet = new Set();
mySet.add(10);
mySet.add(20);
mySet.add(30);

console.log(mySet); // Output: Set { 10, 20, 30 }

// 2. Check if the Set has a specific element using .has() method
console.log(mySet.has(20)); // Output: true
console.log(mySet.has(40)); // Output: false

// 3. Delete an element from the Set using .delete() method
mySet.delete(20);
console.log(mySet); // Output: Set { 10, 30 }

// 4. Iterate over the Set using .keys() method
// In Sets, .keys() and .values() do the same thing
for (const key of mySet.keys()) {
  console.log(key);
}
// Output:
// 10
// 30

// 5. Get the size of the Set using .size property
console.log(mySet.size); // Output: 2


Exemplo de conjunto com problema de leetcode:

3. Substring mais longa sem repetição de caracteres

Dada uma string s, encontre o comprimento da substring mais longa sem repetir caracteres.

Solução

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let set = new Set();
    let ans = 0;
    let s_index = 0;
    for (let i = 0; i 



Explicação:
A função lengthOfLongestSubstring usa uma técnica de janela deslizante com um Set para encontrar a substring mais longa sem repetir caracteres:

  • Expandir janela: adicione caracteres ao conjunto se eles ainda não estiverem presentes.
  • Reduzir janela: Remove caracteres do início da janela quando duplicatas são encontradas, ajustando o tamanho da janela.
  • Comprimento da atualização: rastreie o comprimento máximo da substring com caracteres exclusivos.
  • A abordagem garante uma complexidade de tempo O(N) eficiente, processando cada caractere no máximo duas vezes.

É isso, se você tiver alguma dúvida ou sugestão ou qualquer coisa fique à vontade para adicionar comentários.

Fontes :
MDN (Conjunto)

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/yashrajxdev/set-data-structure-in-javascript-2e4i?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3