ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

Data Science: Алгоритмы и Структуры данных

Data Science: Алгоритмы и Структуры данных

Открыть в Telegram

Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество: @oleginc Канал на бирже: https://telega.in/c/structuredata

Больше
7 575
Подписчики
-324 часа
-197 дней
-6630 дней
Архив постов
Алгоритм решения задачи Есть куча способов решить данную задачу. Ниже я приведу простой и интересный способ решить ее. Пройди
Алгоритм решения задачи Есть куча способов решить данную задачу. Ниже я приведу простой и интересный способ решить ее. Пройдитесь по заданному массиву слева направо. Во время обхода поддерживайте количество ненулевых элементов в массиве (к примеру в счетчике count). Для каждого ненулевого элемента gjvtcnbnt элемент в arrcount и увеличьте сам count. После полного обхода все ненулевые элементы уже будут перемещены во внешний интерфейс и count устанавливается как индекс нулевого элемента. Теперь все что нам остается - запустить цикл, который формирует все оставшиеся элементы нулевыми от count до конца самого массива.

Задача: переместить нули в конец Дан массив случайных чисел, необходимо переместить все нули данного массива в конец. Наприме
Задача: переместить нули в конец Дан массив случайных чисел, необходимо переместить все нули данного массива в конец. Например, если задан массив 1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, необходимо его изменить к виду: 1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0. Порядок остальных элементов должен остаться прежним. Сложность O(n), а пространство О(1)

Самое большое хранилище слитых платных книг для программирования уже в Telegram: — 📚 Полка Разработчика — 📖 Кладовая Книг —
Самое большое хранилище слитых платных книг для программирования уже в Telegram: — 📚 Полка Разработчика — 📖 Кладовая Книг — 🗂 Архив Разработчика 🚽 IT Memes — свежий IT юмор, отобранный нейросетью. 🗞 3D News — актуальные новости из IT-индустрии.

Вращение в AVL-деревьях Двойные повороты - достаточно сложная тема, но я нашел достаточно хорошее объяснение этому. Обратите
Вращение в AVL-деревьях Двойные повороты - достаточно сложная тема, но я нашел достаточно хорошее объяснение этому. Обратите ваше внимание на картинку. В данном случае представлено вращение влево-вправо. Поворот влево-вправо - это комбинация вращений влево, за которым следует вращение вправо. Есть аналогичное вращение вправо-влево, только оно с точностью наоборот. Сначала вращение вправо, а после уже влево!

Вставка в AVL дерево (словесное описание) Предположим что новый узел называется w Алгоритм: 1. Выполните стандартную вставку
Вставка в AVL дерево (словесное описание) Предположим что новый узел называется w Алгоритм: 1. Выполните стандартную вставку в BST для w узла 2. Начиная с w узла пройдите вверх и найдите первый несбалансированный узел. Пусть узел z будет первым несбалансированным узлом, у - будет потомком узла z, который приходит на пусть от w к z, а x - будет внуком z, у которого путь от w к z 3. Перебалансируйте дерево, выполнив соответствующие повороты поддерева с корнем z. Может быть 4 случая: - у - является левым потомком z, а x - левым потомком y (left left case) - y - левый дочерний элемент z, а x - правый дочерний элемент у (left right case) - y - правый дочерний элемент z, а x - правй дочерний элемент y (right right case) - y - является правым дочерним элементом z, а x - левым дочерним элементом y (right left case)

Алгоритм вставки в AVL-дерево На картинке идеально и пошагово представлен алгоритм того: как происходит вставка элементов и п
Алгоритм вставки в AVL-дерево На картинке идеально и пошагово представлен алгоритм того: как происходит вставка элементов и после перебалансировка дерева.

Зачем вообще работать с AVL-деревьями ? Логичный вопрос: который у вас мог произойти за это время, а зачем вообще использоват
Зачем вообще работать с AVL-деревьями ? Логичный вопрос: который у вас мог произойти за это время, а зачем вообще использовать эти AVL деревья? Ведь есть же обычное бинарное дерево и с ним почти любая операция может занимать сложность O(h), где h - высота непосредственно дерева. Однако стоимость операции поиска, вставки и удаления элементов может становится и хуже, к примеру O(n). Становится оно хуже из-за того, что само бинарное дерево может быть искаженным и иметь например мелкое левое поддерево и очень большое правое. AVL деревья нам гарантирует, что высота дерева остается O(logN) после каждой вставки и удаления. Соответственно эта гарантия дает нам возможность говорить, что это и есть верхняя граница любого нашего алгоритма поиска, вставки и удаления.

4PDA теперь в Telegram! 4PDA – крупнейший в рунете тематический ресурс, посвященный технологиям, приложениям и кодингу. Специ
4PDA теперь в Telegram! 4PDA – крупнейший в рунете тематический ресурс, посвященный технологиям, приложениям и кодингу. Специально для программистов у них появился официальный канал в телеграм, где вы увидите сливы платных курсов, интересные статьи и много другого! Подписывайтесь: @4pda_forum

AVL деревья AVL - это самобалансирующееся двоичное дерево поиска (BST), в котором разница между высотами левого и правого под
AVL деревья AVL - это самобалансирующееся двоичное дерево поиска (BST), в котором разница между высотами левого и правого поддеревьев не может быть больше единицы для всех узлов. Вышеупомянутое дерево - является AVL, потому что разница между высотами левого и правого поддеревьев составляет для каждого узла не меньше 1. Также можно обратить внимание на картинке как раз на балансировочный фактор, о которым мы поговорим далее.

Решение задачи: абсолютная разница между 2 числами Ну что давайте подумаем над решением? Самое очевидное и прямолинейное, это
Решение задачи: абсолютная разница между 2 числами Ну что давайте подумаем над решением? Самое очевидное и прямолинейное, это взять и пройтись по каждому элементу каждого массива и найти наименьшую разницу таким образом. Чем плох данный проход? Ну например тем, что будет слишком много итераций. Как же ускорить данный алгоритм? Для этого есть подход по работе с массивами использовать собственные указатели. Давайте возьмем 2 массива и сначала их отсортируем, а после поставим на каждом указатель в начальное состояние. И будем сравнивать значения. Если в первом массиве значение меньше чем во втором, то двигаем только первый указатель(первого массива), если наоборот - то двигаем второй указатель. Всегда записываем в переменные только те значения, которые реально меньше. Дойдя до конца одно из массива мы со смелостью сможем сказать, что в сохраненных значениях(самого лучшего результата) будет нашим финальным результатом.

Задача: наименьшая разница Напишите функцию, которая на входе принимает 2 массива целочисленных чисел и находит пару чисел (и
Задача: наименьшая разница Напишите функцию, которая на входе принимает 2 массива целочисленных чисел и находит пару чисел (из каждого массива по одному) где абсолютная разница между ними близка или равна 0. Вернуть массив, который содержит 2 эти цифры: на первой позиции число с первого массива, на второй позиции число со второго массива.

Нейросеть научили создавать обнажённых женщин. Ребята из ИИ уже выкатили инструкцию, как собрать свою женщину. Фулл в закрепе
Нейросеть научили создавать обнажённых женщин. Ребята из ИИ уже выкатили инструкцию, как собрать свою женщину. Фулл в закрепе: https://t.me/+wqQ2vzTlxpw5YWJi

DFS or BFS Какой же алгоритм выбрать? Всегда становится именно вопрос в этом. На самом деле оба алгоритма рекурсивные и затра
DFS or BFS Какой же алгоритм выбрать? Всегда становится именно вопрос в этом. На самом деле оба алгоритма рекурсивные и затрачивают определенные ресурсы. Однако, вам необходимо понять, что вам необходимо найти (или что ближе к тому, что мы пытаемся найти) Ведь как мы уже обнаружили DFS - работает от листьев к корню, а BFS от корня к листьям. Соотвественно самый простой выбор будет заключаться в том, что если мы ищем корневые элементы - лучше применить BFS. Если же больше интересны листья - DFS

BFS и DFS обходы двоичного дерева BFS - обход дерева в ширину (по факту по порядку уровней) DFS - обход в глубину, причем быв
BFS и DFS обходы двоичного дерева BFS - обход дерева в ширину (по факту по порядку уровней) DFS - обход в глубину, причем бывает несколько видов. 1. Inorder (левый-корень-правый) 2. Preorder (корень-левый-правый) 3.Postorder (левый-правый-корень) Давайте обратим внимание на пример (на картинке) BFS такого дерева был бы: A B C D E F DFS Preorder: A B C E D F DFS Inorder: B A E C F D DFS Postorder: B E C F D A

💥Что тебя ждёт на курсе Алгоритмы и структуры данных? 👉🏻Поддержка от предподавателя 24/7 👉🏻Интересные и полезные практич
💥Что тебя ждёт на курсе Алгоритмы и структуры данных? 👉🏻Поддержка от предподавателя 24/7 👉🏻Интересные и полезные практические задания 👉🏻Ты научишься применять алгоритмы и структуры данных при разработке программ 👉🏻Ты сможешь подготовиться к техническому собеседованию и продвинутой разработке Познакомиться с курсом подробнее: https://proglib.io/w/d2263cd0 К концу курса ты получишь практический опыт решения сложных алгоритмических задач и сможешь легко пройти техническое собеседование Начни учиться уже сейчас со скидкой в 15% по промокоду PROGRAMMIST

Реализация удаления на Python 3 Для того чтобы это все заработало, нам нужно еще 2 вещи: во-первых, иметь класс самой Node (м
Реализация удаления на Python 3 Для того чтобы это все заработало, нам нужно еще 2 вещи: во-первых, иметь класс самой Node (можете взять с прошлой реализации вставки), а также проход по дереву inorder (который также можете взять с прошлой реализации).

Алгоритм удаления узла из бинаного дерева 1. Начинаем с корня, находить самый глубокий и самый правый узел в двоичном дереве
Алгоритм удаления узла из бинаного дерева 1. Начинаем с корня, находить самый глубокий и самый правый узел в двоичном дереве и узел, который мы хотим удалить 2. Заменяем данные самого глубокого правого узла, узлом который хотим удалить. 3. Затем удаляем самый глубокий правый узел. На картинке вы можете увидеть как это происходит и почему я говорю о самом глубоком правом узле, как об основной точке отправления

Repost from Security Vision
Мы продолжаем создавать короткие видеоролики, в которых просто и доступно рассказываем о продуктах бренда Security Vision. Новое видео наглядно демонстрирует процессы применения модуля «Управление активами и инвентаризация» и будет интересно техническим специалистам, которые хотят подробно ознакомиться с тем, как строится работа с ним на практике: https://youtu.be/_zvVaiI0auA

Реализация вставки в бинарное дерево на JS/Python/C++
Реализация вставки в бинарное дерево на JS/Python/C++

Алгоритм вставки в бинарное дерево Идея состоит в том, чтобы выполнить итеративных обход заданного дерева по порядку уровней
Алгоритм вставки в бинарное дерево Идея состоит в том, чтобы выполнить итеративных обход заданного дерева по порядку уровней с помощью (как ни странно) очереди! Если мы находим узел, левый дочерний жлемент которого пуст, мы делаем новый ключ левым дочерним элементом узла. Иначе, если мы найдем узел, правый дочерний элемент, которого пуст, мы сделаем новый ключ правым дочерним элементом. Мы продолжим обходить дерево, пока не найдем узел, у которого либо слева, либо справа пусто.