Всем привет,
Вы ищете структуру данных, которая хранит уникальные значения, позволяет вставлять значения, определять общее количество значений и удалять значения? Идеальный выбор для этого – комплект. Многие языки программирования включают встроенную структуру данных Set, и JavaScript не является исключением. Давайте углубимся в то, как работают наборы.
Что установлено?
Set — это структура данных, которая позволяет хранить уникальные значения любого типа, будь то примитивные значения или ссылки на объекты. Набор позволяет выполнять операции вставки, удаления, обновления и изменения размера с временной сложностью O(1). Что делает установку более быстрой и эффективной.
Наборы созданы для быстрого доступа. Обычно они реализованы таким образом, что поиск элементов выполняется быстрее, чем простая проверка каждого элемента по одному. Типичной реализацией может быть хеш-таблица (поиск O(1)) или дерево поиска (поиск O(log(N))).
Ключевые моменты
Основные методы
Примеры
// 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
Пример набора с проблемой литкода:
3. Самая длинная подстрока без повторяющихся символов
Дана строка s. Найдите длину самой длинной подстроки без повторяющихся символов.
Решение
/** * @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Объяснение:
Функция lengthOfLongestSubstring использует технику скользящего окна с набором для поиска самой длинной подстроки без повторяющихся символов:
Вот и все. Если у вас есть какие-либо сомнения, предложения или что-то еще, не стесняйтесь добавлять комментарии.
Источники:
МДН (набор)
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3