Всё про Алгоритмы и Структуры данных
前往频道在 Telegram
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество, авторские права: @oleginc, @tatiana_inc Канал на бирже: https://telega.in/c/structuredata
显示更多7 756
订阅者
-124 小时
-37 天
-2530 天
帖子存档
Структура данных - дерево
Дерево представляет собой узлы, соедененные ребрами. Есть много разновидностей деревьев. Начнем мы с самого простейшего: двоичное дерево.
Двоичное дерево - структура данных, используемая для хранения данных. Бинарное дерево имеет условие - каждый узел может иметь максимум два дочерних элемента.
Двоичное дерево имеет преимущество в поиске и вставки/удаления элемента, потому что это происходит так же быстро как и в связном списке
1250ГБ платных курсов слили на CourseHunter. Вот лучшие из них:
- [SkillBox] Профессия Python разработчика.rar 27GB
- [Stepik] Big Data для Data Science.rar 36GB
- [HTML academy] Онлайн‑курс Vue js для опытных разработчиков.rar 37GB
- [Udemy] Python ООП - С нуля до Профи.rar 12GB
- [Udemy] Верстка и создание вебсайтов с нуля до результата 2022.rar 26GB
- [SkillFactory] Курс по изучению SQL.rar 20GB
- [Geek Brains] Java - учимся на практике.rar 18GB
- [SkillBox] NodeJS с нуля, основы и построение архитектуры приложений.rar 27GB
- [Stepik] Django 3 - Full Stack разработка веб-сайтов на Python.rar 20GB
Решение задачи: проверить можно ли отсортировать очередь в другую очередь, используя стек на C++/Python/JS
Задача: проверить можно ли отсортировать очередь в другую очередь, используя стек
Ух, сложное название, не правда ли? Давайте разберемся что же необходимо на самом деле сделать и что скрывается под таким сложным именованием.
Итак, дана очередь, состоящая из первых n-натуральных чисел (в случайном порядке). Задача состоит в том, чтобы проверить, можно ли с помощью стека расположить данные элементы в очереди в порядке возрастания и засунуть в другую очередь. Разрешенные операции:
1. Push, pop операции над стеком
2. enqueue, dequeue - операции над очередью
Пример:
input: queue = { 5, 1, 2, 3, 4 }
Output - True
Объяснение:
1. Pop первый элемент из текущей очереди
2. Вставить данный элемент в стек
3. Теперь dequeue все элементы очереди и засуньте в другую очередь при помощи enqueue
4. Достаньте элемент из стека (pop) и засуньте его в 2ую очередь
Возможно - значит возвращаем True
Решение:
правда на всех языках будет только завтра, чтобы вы могли сами подумать над задачей и, возможно, решить
Освойте две смежные профессии в сфере аналитики и станьте востребованным специалистом!
Мы собрали опыт наших ведущих экспертов и методологов и создали курс, объединяющий в себе фундаментальные знания, прикладной узкоспециализированный инструментарий и доступную информацию. Мы умеем учить и точно знаем, каким может быть путь в профессии IT.
Во время обучения вы узнаете, кто такой аналитик и какие задачи он решает. А также разберетесь какие компетенции необходимы для того, чтобы стать профессионалом.
После получения фундаментальных знаний осознанно выберете специализацию для более глубокого изучения.
Гарантия трудоустройства закреплена в договоре. Если после успешного обучения вы не найдете работу, мы вернем вам деньги.
Основные операции и назначение хеш-таблицы
Основное назначение хеш-таблиц - хранить большой объем данных, к которому можно очень легко достучаться. Изначально данную структуру данных использовали вовсе как большие библиотеки.
К примеру - очень неплохо в такой структуре хранить телефонные значения. И доставать например по индексу ФИО человека.
Основные операции
- Поиск - поиск элемента по ключу в хеш-таблице. Самое частое использование именно данной операции
- Вставка - естественно, нам необходима возможность вставки в данную структуру данных
- Удаление - также возникает необходимость и в удалении элемента из данной структуры.
80% людей читают этот пост сейчас с мобильного устройства, ведь так намного удобнее. Все компании стараются как можно лучше адаптировать свой продукт под Android и iOS.
Разрабатывать собственные приложения или работать в компании, Android или iOS - это всё личный выбор каждого, но в любом случае будут необходимы знания мобильной разработки.
Но зачем платить школам за курсы и мучаться над старыми учебниками, если есть канал "Всё про Mobile Development", где вам понятным языком объяснят о всех тонкостях разработки приложений на Android и iOS.
Абсолютно в каждой IT компании необходим опытный тестировщик. Количество вакансий на hh.ru непрестанно растёт а зарплата на данный момент от 150,000руб.
Конечно, чтобы достичь результата необходима систематическая работа и правильно подобранные материалы для обучения. Именно это может предоставить вам канал "Всё про QA" совершенно бесплатно!
Платные школы берут в среднем 100,000руб. за один курс по этой специальности, но зачем платить деньги за то, что можно освоить совершенно бесплатно.
Структура данных - хеш-таблица
Хеш-таблица - структура данных, в которой данные хранятся ассоциативно. По факту, данные хранятся в формате массива, где каждое значение имеет свое уникальное значение индекса. Доступ к данным становится очень быстрым, если мы знаем этот индекс, а не идем перебором.
Таким образом данная структура данных примечательна тем, что операция вставки и поиска - выполняются очень быстро и независимо от размера данных.
Хеширование - метод для преобразования диапазона значений ключа в диапазон индекса массива. Внутри используется оператор по модулю, чтобы получить как раз таки этот диапазон значений ключа.
Если ячейка индекса уже занята, то мы будем искать следующее пустое место в массиве, просматривая следующую ячейку, пока не найдем пустую. Данный способ называется линейным зондированием
14 сентября начнется наш подготовительный курс по Python 📚 🐍📚
Даём только мясную и прикладную информацию. Никакой воды и траты твоего времени.
По окончании 14-дневного курса ты уже владеешь базовым знанием языка и даже напишешь собственную программу!
Прямо сейчас переходи по ссылке и бронируй место!
⚡️ Теперь не нужно платить за обучение, оно стало совершенно бесплатным!
Все лучшие курсы от Skillbox, Яндекс.Практикум, Udemy и других топовых IT школ сливают на канал CourseHunter. Если вы не нашли нужный вам курс, смело пишите в предложку и вскоре его выложат.
Специально для наших подписчиков будет бонус - архив с топ-10 курсов по мнению админа в личных сообщениях после подписки.
Решение задачи: проверка балансировки скобок в выражении на JS/Python/C++
Задача: проверка балансировки скобок в выражении
Очень типичная задача на использование Stack как структуры данных. Суть такова, необходимо проверить что в выданном вами выражении - правильный порядок скобок разного типа (“{“, “}”, “(“, “)”, ““, “”)
К примеру:
1. exp = "(){}({})"
result = true
2. exp = "(){)"
result = false
Алгоритм:
1. Объявить стек символов S
2. Проходимся по всей строке от начала до конца:
Если текущий символ является начальной скобкой, если да поместить в стек
Если текущий символ закрывающая скобка (обратный вариант), то достаем из стека и сверяем совпадают ли по типу данные скобки (естественно предварительно надо иметь либо object(JS, TS), либо dictionary(python) с соответствием)
Если скобки не совпадают - соответствено выражение не сбалансировано и можно кидать сразу False
3. После полного обхода, если в стеке еще осталась какая-либо скобка - выражение также не сбалансировано
Совет от админа: пройди курс, который давно хотел пройти, но откладывал это из-за его стоимости.
Теперь не нужно платить деньги за обучение, ведь оно стало совершенно бесплатным благодаря канала CourseHunter. Здесь уже слито сотни гигабайтов платных курсов от топовых школ, и каждый день их количество растёт. Если ты не нашёл нужный тебе курс, смело пиши в предложку и его обязательно выложат.
Сохраняй канал, пока его не забанили:
https://t.me/+hpOYSy0WBjVlMzRi
Асимптотический анализ
Я часто говорю о какой-то сложности алгоритма, но так ни разу и не сказал, как же эта сложность вычисляется и откуда берется!
Асимптотический анализ алгоритма относится к определению математического формирования его производительности во время выполнения. Используя данный анализ, мы можем очень хорошо определить наилучший, средний и худший сценарии алгоритма.
Асимптотический анализ так или иначе связан с входными параметрами. Если они отсутствуют, мы можем считать, что алгоритм работает за константное время.
Асимптотический анализ относится к вычислению времени выполнения любой операции в математических единицах вычисления. Например, время выполнения одной операции вычисляется как f (n) и может быть для другой операции оно вычисляется как g (n 2 ). Это означает, что время выполнения первой операции будет линейно увеличиваться с увеличением n, а время выполнения второй операции будет увеличиваться экспоненциально при увеличении n.
Python пришел в телеграм!
Python — второй по популярности язык в мире. Он очень универсален: можно писать сайты, а можно искусственный интеллект. Теперь у Python есть русскоязычный канал. Это первоисточник всего, что появляется в платных курсах и остальных ресурсах. Стоит подписаться!
Метод 2
Мы видим, что Si в день i можно легко вычислить, если нам известен ближайший день, предшествующий i, при условии что цена больше, чем в этот день, чем цена в день i. Если такой день существует, назовем его h(i), в противном случае мы определим h(i) = -1
Теперь вычисления сводятся к простой арифметике Si = i - h(i)
Для реализации этой логики я использовал стек для хранения дней i, h (i), h (h (i)) и т. д. Когда мы переходим от дня i-1 к i, мы извлекаем дни, когда цена акции была меньше или равна цене i, а затем помещаем значение дня i обратно в стек.
Photoshop теперь в телеграм!
Photoshop — самый популярный графический редактор в мире! Это незаменимый инструмент для любого дизайнера. А сейчас в телеграмме появился официальный русскоязычный канал. Это первоисточник всего, что появляется в платных курсах и остальных ресурсах. Стоит подписаться!
Задача диапазоны Stocks
Я люблю достаточно различные задачи, которые помогают в реальной жизни. К примеру эта задача по теме финансов. У нас есть список из n еженедневных котировок цены за акцию, и нам нужно рассчитать диапазон цены акции для всех n дней.
Промежуток Si цены акции в день i определяется как максимальное количество последовательных дней непосредственно перед данным днем, для которых цена акции в текущий день меньше или равна ее цене в данный день.
Например, если массив цен за 7 дней задан как { 100, 80, 60, 70, 60, 75, 85 }, то значения диапазона для соответствующих 7 дней будут { 1, 1, 1, 2, 1, 4, 6 }
Метод 1
Посмотреть массив входных цен, для каждого посещаемого элемента перемещаться по элементам слева от нег ои увеличивать значение диапазона, пока элементы слева меньше.
Короче, вот вам архивы с платными книгами, иначе так не выучите ни один язык:
📚 Полка Разработчика
📖 Кладовая Книг
🗂 Архив Разработчика
🚽 IT Memes — тут чисто поржать, пока компилятор там возится;
🗞 3D News — актуальные новости IT-индустрии на случай, если мемы надоели.
Сохраняй, пригодится
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
