Последние посты

Алгоритмы и структуры данных
22 сент., 11:59
Поиск в повернутом отсортированном массивеПроблема: Дан массив длины n, который изначально был отсортирован по возрастанию. Далее его поворачивали от 1 до n раз. Например, массив nums = [1,2,3,4,5,6] может выглядеть следующим образом: [3,4,5,6,1,2], если его повернули 4 раза. [1,2,3,4,5,6], если он был повернут 6 раз.Учитывая повернутый отсортированный массив nums и число (target), которое надо найти, алгоритм должен возвращать индекс target в пределах nums или -1, если он отсутствует. Предполагается, что все элементы в отсортированном повернутом массиве уникальны.Решение, работающее за время O(n), тривиально, поэтому реализацию должна быть за время O(log n).Пример 1: Input: nums = [3,4,5,6,1,2], target = 1 Output: 4Пример 2: Input: nums = [3,5,6,0,1,2], target = 4 Output: -1


Алгоритмы и структуры данных
15 сент., 11:59
Найти минимум в повернутом отсортированном массивеПроблема: Дан массив длины n, который изначально был отсортирован по возрастанию. Далее его поворачивали от 1 до n раз. Например, массив nums = [1,2,3,4,5,6] может выглядеть следующим образом: [3,4,5,6,1,2], если его повернули 4 раза. [1,2,3,4,5,6], если он был повернут 6 раз.Обратим внимание, что поворот массива 4 раза перемещает последние четыре элемента массива в начало. Вращение массива 6 раз дает исходный массив.Предполагая, что все элементы в повернутом отсортированном массиве уникальны, реализуемый алгоритм должен возвращать минимальный элемент этого массива. Решение, работающее за время O(n), тривиально, поэтому реализацию должна быть за время O(log n).Пример 1: Input: nums = [3,4,5,6,1,2] Output: 1Пример 2: Input: nums = [4,5,0,1,2,3] Output: 0
1,220Открыть в Telegram
Алгоритмы и структуры данных
7 сент., 08:59
Вес последнего камняПроблема: Дан массив целых чисел, где Stones[i] представляет вес i-го камня. Представим, что мы играем в игру с камнями. На каждом ходу выбираем два самых тяжелых камня и разбиваем их вместе. Предположим, что два самых тяжелых камня имеют вес x и y, причем x <= y.Результат удара может быть: - Если x == y, оба камня уничтожаются, и - Если x != y, камень веса x уничтожается, а камень веса y приобретает новый вес y - x.В конце игры остается не более одного камня. Необходимо реализовать алгоритм, который возвращает вес последнего оставшегося камня. Если камней не осталось, верните 0.Пример: Input: stones = [2,3,6,2,4] Output: 1
1,630Открыть в Telegram
Алгоритмы и структуры данных
3 сент., 11:04
СудокуАлгоритм:1. Создайте функцию, которая проверяет, действительна ли данная матрица судоку или нет. Сохраните Hashmap для строки, столбца и полей. Если какое-либо число имеет частоту больше 1 в hashMap, верните false, иначе верните true;2. Создайте рекурсивную функцию, которая принимает сетку и текущий индекс строки и столбца.3. Проверьте базовые случаи: ⁃ Если индекс находится в конце матрицы, т.е. i=N-1 и j=N, тогда проверьте, безопасна ли сетка или нет, если безопасно, распечатайте сетку и верните true, иначе верните false. ⁃ Другой базовый случай — когда значение столбца равно N, т. е. j = N, затем происходит переход к следующей строке, т. е. i++ и j = 0.4. Если текущий индекс не присвоен, то заполняем элемент от 1 до 9 и повторяем для всех 9 случаев индекс следующего элемента, т.е. i, j+1. если рекурсивный вызов возвращает true, разорвите цикл и верните true.5. Если
1,810Открыть в Telegram
Алгоритмы и структуры данных
3 сент., 08:59
Участвуй в КосмоХакатоне 4–6 сентября, решай реальные космические кейсы, поборись за 1,2 млн ₽ и шанс попасть в финал в Москве!С 4 по 6 сентября в Ростове-на-Дону пройдёт КосмоХакатон Южного и Северо-Кавказского федеральных округов — масштабное соревнование для тех, кто готов превратить данные о нашей планете в реальные технологические решения.Один хакатон — два формата: участвовать можно очно в Ростове-на-Дону или онлайн из любой точки России. Все команды работают над едиными кейсами, оцениваются по одинаковым критериям и участвуют в общем рейтинге.В рамках хакатона также пройдёт открытая лекция «Применение космических технологий для решения экологических задач» от Игоря Кожелина, CEO SR Data. Призовой фонд — 1 200 000₽Даты проведения: 4–6 сентября Формат: онлайн и офлайн Очная площадка: Центр развития предпринимательства «Новый Ростов», ул. Максима Горького, 151, 4 этаж. 🔗 Заре
1,470Открыть в Telegram
Алгоритмы и структуры данных
27 авг., 16:05
Поедание банановПроблема: Дан целочисленный массив piles, где piles[i] — количество бананов в i-й стопке. Вам также дано целое число h, которое представляет собой количество часов, в течение которых вам нужно съесть все бананы.Необходимо установить норму потребления бананов в час, равную k. Каждый час вы можете выбрать стопку бананов и съесть k бананов из этой стопки. Если в кучке меньше k бананов, вы можете съесть эту кучу, но не сможете съесть другую кучу в тот же час.Реализуемый алгоритм должен возвращать минимальное целое число k такое, что вы сможете съесть все бананы за h часов.Пример 1: Input: piles = [1,4,3,2], h = 9 Output: 2Пример 2: Input: piles = [25,10,23,4], h = 4 Output: 25
1,690Открыть в Telegram
Алгоритмы и структуры данных
27 авг., 13:59
Яндекс запускает юбилейный сезон Тренировок по алгоритмам 🎉Без алгоритмов никуда: это база, которую почти всегда проверяют на технических собеседованиях в бигтехе, в том числе в Яндексе. Если давно собирались освежить знания или просто хотите понять, насколько хорошо решаете задачи под таймером, тут как раз можно потренироваться.Интенсив создан для тех, кто хочет подтянуть теорию, потренироваться в решении алгоритмических задач и системно подготовиться к интервью: привыкнуть к таймингам и перестать бояться часового техсобеса.ℹ️ За две недели вы пройдете три больших блока с видеоуроками, закрепите теорию на практике и потренируетесь в формате реального собеседования на соревнованиях. Выбирайте трек — тренировка с решением задач в своем темпе или соревнование.За активность предусмотрены бонусы: сертификат за 15 решённых задач в тренировочном блоке или 4 в соревновательном,
1,540Открыть в Telegram
Алгоритмы и структуры данных
19 авг., 13:59
Градиентная повышающая регрессияGradient Boosting — это метод ансамблевого обучения, который объединяет несколько слабых моделей (обычно деревьев решений), чтобы получить мощную и точную модель. Идея заключается в том, чтобы каждое следующее дерево исправляло ошибки предыдущего.Работа градиентного бустинга: 1) Инициализация: Создаем первое дерево, которое пытается предсказать целевое значение. 2) Оценка ошибки: Вычисляем разницу между фактическими значениями и предсказанными — это наши остатки. 3) Обучение следующего дерева: Строим следующее дерево на основе ошибок предыдущего, чтобы минимизировать остатки. 4) Комбинирование моделей: Итоговое предсказание — это сумма предсказаний всех деревьев с учетом их весов.Каждое новое дерево учится на градиенте ошибки предыдущего, отсюда и название — градиентный бустинг.
1,900Открыть в Telegram
Алгоритмы и структуры данных
12 авг., 13:59
Эластичная чистая регрессияElastic Net — метод линейной регрессии, который сочетает преимущества двух регуляризаций: Лассо (L1) и Риджа (L2). Он помогает справиться с задачей отбора признаков и предотвращает переобучение, особенно когда данные содержат много коррелирующих признаков.Эластичная сеть использует комбинацию штрафов: L1-регуляризация (Лассо): способствует разреженности признаков (некоторые коэффициенты становятся нулевыми). L2-регуляризация (Ридж): снижает величину коэффициентов, предотвращая переобучение.Когда использовать эластичную чистую регрессию? - Данные содержат множество признаков, часть из которых сильно коррелирует. - Требуется и отбор признаков (как у Лассо), и уменьшение коэффициентов (как у Риджа). - Простая линейная регрессия приводит к переобучению.
2,130Открыть в Telegram
Алгоритмы и структуры данных
3 авг., 05:01
Лассо-регрессияLasso Regression — это метод линейной регрессии, который включает регуляризацию для уменьшения сложности модели и предотвращения переобучения. Название "Лассо" происходит от "Least Absolute Shrinkage and Selection Operator", что подчеркивает две основные функции этого метода: сжатие коэффициентов и отбор признаков.В отличие от ридж-регрессии, которая добавляет штраф на сумму квадратов коэффициентов, лассо-регрессия использует штраф на сумму абсолютных значений коэффициентов.Основные преимущества лассо-регрессии: - Отбор признаков: Лассо может полностью занулять некоторые коэффициенты, что приводит к исключению соответствующих признаков из модели. Это полезно в задачах с большим количеством переменных, где важно выделить наиболее значимые. - Устойчивость к переобучению: Регуляризация помогает предотвратить переобучение, особенно в ситуациях с высокоразмерными данными.
2,380Открыть в Telegram
Алгоритмы и структуры данных
30 июл., 11:05
Ридж-регрессияRidge Regression — это метод линейной регрессии, который используется для анализа данных, когда существует проблема мультиколлинеарности (сильной корреляции между независимыми переменными). Основная идея ридж-регрессии заключается в добавлении регуляризационного члена к обычной линейной регрессии, что помогает улучшить стабильность и предсказательную способность модели.В отличие от стандартной линейной регрессии, которая минимизирует сумму квадратов ошибок, ридж-регрессия добавляет штраф за большие значения коэффициентов.Основные преимущества ридж-регрессии: - Устойчивость к переобучению: Регуляризация помогает предотвратить переобучение модели, особенно в ситуациях, когда количество признаков велико по сравнению с количеством наблюдений. - Сглаживание коэффициентов: Метод позволяет избежать получения очень больших коэффициентов, которые могут привести к нестабильным
2,240Открыть в Telegram
Алгоритмы и структуры данных
22 июл., 13:59
SVM с RBF ядромSVM с RBF ядром (радиальная базисная функция) — это метод машинного обучения для решения задач классификации и регрессии, который позволяет находить нелинейные границы между классами. RBF ядро особенно полезно, когда линейные модели не могут точно разделить данные, так как оно способно создавать сложные, нелинейные разделяющие поверхности.Принцип работы RBF ядра: RBF ядро трансформирует данные в высокоразмерное пространство признаков, где линейное разделение классов становится возможным. Вместо того чтобы пытаться разделить данные в исходном пространстве, оно создает нелинейные границы между классами в новом, высокоразмерном пространстве.Когда использовать RBF ядро: 1. Линейные модели или полиномиальные ядра не дают хороших результатов, так как границы между классами слишком сложны. 2. Требуется максимальная гибкость в создании нелинейных границ между классами. 3. Да
2,230Открыть в Telegram
Алгоритмы и структуры данных
15 июл., 13:59
SVM с линейным ядромЭто частный случай метода опорных векторов, который используется для решения задач классификации или регрессии, когда данные могут быть линейно разделены.В SVM с линейным ядром задача состоит в том, чтобы найти гиперплоскость, которая наилучшим образом разделяет два класса данных с максимальным зазором (margin). Основная цель SVM — максимизировать расстояние между ближайшими точками двух классов (называемыми опорными векторами) и гиперплоскостью разделения.Опорные векторы - это точки, которые находятся на границе зазора между классами и которые непосредственно влияют на положение гиперплоскости.Зазор (margin) - это расстояние между гиперплоскостью и ближайшими точками каждого класса. Задача SVM заключается в максимизации этого зазора.Есть два типа зазора: 1. Классификация с жёстким зазором (hard margin), когда все обучающие образцы должны быть правильно
2,410Открыть в Telegram
Алгоритмы и структуры данных
8 июл., 13:59
Метод опорных векторовSVM (Support Vector Machine) — это алгоритм машинного обучения, используемый для задач классификации и регрессии. Он работает на основе нахождения гиперплоскости, которая наилучшим образом разделяет данные на различные классы.Гиперплоскость — векторное пространство с n измерениями может быть разделено с помощью гиперплоскости, которая является подпространством размерности n−1. В двухмерном пространстве это линия, в трехмерном — плоскость, а в общем случае — гиперплоскость.Задача SVM заключается в нахождении гиперплоскости, которая максимизирует расстояние (зазор) между ближайшими точками разных классов. Эти ближайшие точки называются опорными векторами.SVM стремится максимизировать расстояние между классами, что помогает улучшить обобщающую способность модели. Чем больше зазор, тем меньше вероятность ошибки на тестовых данных.
2,630Открыть в Telegram
Алгоритмы и структуры данных
1 июл., 13:59
Логистическая регрессияЭто статистический метод, используемый для моделирования зависимости между одной или несколькими независимыми переменными и бинарной зависимой переменной (например, "да/нет", "1/0", "успех/неудача"). Этот метод особенно полезен в задачах классификации, где необходимо предсказать вероятность принадлежности объекта к одной из категорий.Применение логистической регрессии:- Классификация: Логистическая регрессия часто используется для классификации объектов на две категории. Например, предсказание, будет ли клиент купить продукт или нет, на основе его характеристик.- Медицинские исследования: В медицине логистическая регрессия используется для предсказания вероятности заболевания (например, наличие или отсутствие болезни на основе различных факторов).- Социальные науки: Применяется для анализа данных, где исследуется влияние различных факторов на бинарный
2,790Открыть в Telegram
Алгоритмы и структуры данных
24 июн., 13:59изменён
Полиномиальная регрессияЭто расширение линейной регрессии, которое позволяет моделировать более сложные зависимости между независимой переменной X и зависимой переменной Y. В отличие от линейной регрессии, где мы предполагаем линейную зависимость, полиномиальная регрессия использует полиномиальные функции для описания связи между переменными.Преимущества полиномиальной регрессии - Полиномиальная регрессия может моделировать нелинейные зависимости, что делает её более подходящей для сложных данных по сравнению с линейной регрессией. - Коэффициенты можно легко интерпретировать как влияние каждого полиномиального термина на зависимую переменную.
2,800Открыть в Telegram
Алгоритмы и структуры данных
17 июн., 13:59
Матричный метод линейной регрессииЭтот метод находит широкое применение в различных сферах жизни и бизнеса для анализа данных, например:1. Финансовый анализ и прогнозирование - Оценка рыночных рисков и доходностей. - Прогнозирование цен на жилье.2. Медицина и здравоохранение - Оценка влияния факторов на здоровье. - Анализ и прогнозирование медицинских затрат.3. Маркетинг и бизнес-аналитика - Прогнозирование спроса на товары и услуги. - Анализ поведения клиентов.4. Индустрия развлечений - Рекомендательные системы. - Прогнозирование кассовых сборов фильмов.
3,030Открыть в Telegram
Алгоритмы и структуры данных
10 июн., 13:59
Линейная регрессия (Linear regression)Один из простейший алгоритмов машинного обучения, описывающий зависимость целевой переменной от признака в виде линейной функции.Цель линейной регрессии — поиск линии, которая наилучшим образом соответствует этим точкам.Модель линейной регрессии выглядит следующим образом: Y = aX + b, где: X — независимая переменная, Y — зависимая переменная (предсказываемое значение), a — коэффициент наклона, b — смещение (пересечение с осью Y).Для оценки точности регрессии используют разные метрики, например MSE (mean squared error — средняя квадратическая ошибка). Чем ниже MSE, тем лучше модель.
3,040Открыть в Telegram
Алгоритмы и структуры данных
1 июн., 09:04
Set bits. Алгоритм Брайана КерниганаДля подсчета количества единиц в двоичном представлении целого числа, можно использовать алгоритм Брайана Кернигана.Смысл алгоритма заключается в том, что вычитание единицы из десятичного числа переворачивает все биты после крайнего правого установленного бита (который равен 1), включая самый правый установленный бит.
3,290Открыть в Telegram
Алгоритмы и структуры данных
22 мая, 09:01
Set bits. Рекурсивный методДля подсчета количества единиц в двоичном представлении целого числа, можно использовать рекурсивный метод. С помощью рекурсии перебераем все биты числа и проверяем, установлен ли бит, и если да, то увеличиваем счетчик, отвечающий за установленное количество битов.
3,530Открыть в Telegram
