Forwarded from Timur
✅Задача на
📚Дано целое
квадратных чисел, сумма которых равна
💡Идеальный квадрат - это целое число, равное квадрату
целого числа (например, 1, 4, 9 и 16).
💡Подсказка:
Для решение задачи, можно использовать
алгоритм .
👁🗨Пример №1:
«
»
// 12 = 4 + 4 + 4
👁🗨Пример №2:
«
»
// 13 = 4 + 9
#task #go
Go «Perfect Squares»📚Дано целое
число n, верните наименьшее число идеальных квадратных чисел, сумма которых равна
n.💡Идеальный квадрат - это целое число, равное квадрату
целого числа (например, 1, 4, 9 и 16).
💡Подсказка:
алгоритм
<<Динамическое программирование>>👁🗨Пример №1:
«
n = 12»
3// 12 = 4 + 4 + 4
👁🗨Пример №2:
«
n = 13»
2// 13 = 4 + 9
#task #go
✅
📚Условие задачи: дается строка и целое число
развернуть первые
📚Если есть несколько символов больших k, необходимо развернуть все из
них. Если есть меньше, чем 2k символов, но при этом больше или равно k
символов, то необходимо оставить все как есть.
👁🗨Примеры:
«
»
«
»
📈Сложность:
⌚️Время:
💾Память:
#task #python
«Reverse string» на Python📚Условие задачи: дается строка и целое число
k, необходимо развернуть первые
k символов на каждые 2k символов, отсчитываемых с начала.📚Если есть несколько символов больших k, необходимо развернуть все из
них. Если есть меньше, чем 2k символов, но при этом больше или равно k
символов, то необходимо оставить все как есть.
👁🗨Примеры:
«
string = "abcdefg", k = 2»
"bacdfeg"«
string = "abcd", k = 2»
"bacd"📈Сложность:
⌚️Время:
O(n)💾Память:
O(n)#task #python
Forwarded from Timur
🟢Алгоритм сортировки слиянием (
📚Описание:
Сортировка слиянием — это один из эффективных алгоритмов
сортировки, основанный на принципе разделяй и властвуй.
Алгоритм состоит из двух этапов:
1. Разделение массива на подмассивы
2. Слияние подмассивов в отсортированном порядке
Предположим, у нас есть массив:
- Разделяем массив на 2 части
- И так рекурсивно делим массив до одного элемента в нём
- Дальше Соединяем обратно
📉Сложность:
⌚️Время:
💾Память:
#algorithms #go
Merge Sort) на Golang 📚Описание:
Сортировка слиянием — это один из эффективных алгоритмов
сортировки, основанный на принципе разделяй и властвуй.
Алгоритм состоит из двух этапов:
1. Разделение массива на подмассивы
mergeSort().2. Слияние подмассивов в отсортированном порядке
mergeTwoSlice().Предположим, у нас есть массив:
[5, 3, 8, 6, 2, 7, 4, 1].- Разделяем массив на 2 части
left = [5, 3, 8, 6]; right = [2, 7, 4, 1]- И так рекурсивно делим массив до одного элемента в нём
- Дальше Соединяем обратно
[5] и [3] -> [3, 5], [8] и [6] -> [6, 8] и т.д📉Сложность:
⌚️Время:
O(n log n)💾Память:
O(n)#algorithms #go
Forwarded from Timur
✅Задачка
📚Напишите функцию
возвращает новую строку, из которой удалены все
гласные буквы
👁🗨Примеры:
«
»
«
»
#task #python
«Remove Vowels» по Python📚Напишите функцию
remove_vowels(s), которая принимает строку и возвращает новую строку, из которой удалены все
гласные буквы
(a, e, i, o, u, y в любом регистре).👁🗨Примеры:
«
remove_vowels("Hello world")»
Hll wrld !«
remove_vowels("Python is great")»
"Pthn s grt"#task #python
Forwarded from Timur
✅Алгоритм
💡Объяснение:
Принцип работы основан на методологии "Разделяй и властвуй".
🔵Алгоритм имеет 3️⃣ этапа:
2. Мы должны выбрать pivot element (опорный элемент), есть много вариантов как мы
будем выбирать этот элемент, но мы воспользуемся самым простым, а именно будем брать
последний элемент массива.
3. Берём pivot и все элементы которые меньше pivot, располагаем слева от pivot,
все элементы которые больше pivot располагаем справа.
🔄И повторяем действия 2 и 3 пункт рекурсивно,
до тех пор пока массив не будет отсортирован.
⚙️Уточнение:
параметры
👁🗨Пример:
«
»
📉Сложность:
⌚️Время:
#algorithms #go
QuickSort(Быстрая сортировка) на Golang 💡Объяснение:
📚QuickSort - это алгоритм быстрой сортировки элементов в массиве.Принцип работы основан на методологии "Разделяй и властвуй".
🔵Алгоритм имеет 3️⃣ этапа:
1. На вход поступает не отсортированный массив. 2. Мы должны выбрать pivot element (опорный элемент), есть много вариантов как мы
будем выбирать этот элемент, но мы воспользуемся самым простым, а именно будем брать
последний элемент массива.
3. Берём pivot и все элементы которые меньше pivot, располагаем слева от pivot,
все элементы которые больше pivot располагаем справа.
🔄И повторяем действия 2 и 3 пункт рекурсивно,
до тех пор пока массив не будет отсортирован.
⚙️Уточнение:
параметры
maxIndex и minIndex это диапазон сортировки массива.slice - можно воспринимать как array, просто в golang slice это динамический массив.👁🗨Пример:
«
[9, 12, 9, 2, 17, 1, 6]»
[1, 2, 6, 9, 9, 12, 17]📉Сложность:
⌚️Время:
O(n log n)#algorithms #go
Forwarded from Timur
🟢Алгоритм
⚙️Суть алгоритма:
💡Начинаем с того что в
принимаем не отсортированный массив. Потом
идёт проверка если массив пустой или имеет только
1 элемент, мы считаем его отсортированным и завершаем
работу функции (или возвращаем передаваемый массив, если
реализация не через указатель). Дальше пробегаемся по
всему массиву и на каждой итерации первого цикла, мы
вызываем 2 цикл, который уже от текущего элемента
до нулевого элемента(то есть начало массива). И при
этом сравниваем текущий элемент с предыдущим, и
если текущей элемент окажется меньше предыдущего, то меняем местами
их в массиве, в противном случаи выходим из 2 цикла, и так до конца всего
массива. На выходи получаем отсортированный массив.
📉Сложность:
⌚️Время:
💾Память:
#algorithms #go
Insertion Sort(Сортировка вставки) на Golang ⚙️Суть алгоритма:
💡Начинаем с того что в
function insertionSort мы принимаем не отсортированный массив. Потом
идёт проверка если массив пустой или имеет только
1 элемент, мы считаем его отсортированным и завершаем
работу функции (или возвращаем передаваемый массив, если
реализация не через указатель). Дальше пробегаемся по
всему массиву и на каждой итерации первого цикла, мы
вызываем 2 цикл, который уже от текущего элемента
(*(nums[i])) до нулевого элемента(то есть начало массива). И при
этом сравниваем текущий элемент с предыдущим, и
если текущей элемент окажется меньше предыдущего, то меняем местами
их в массиве, в противном случаи выходим из 2 цикла, и так до конца всего
массива. На выходи получаем отсортированный массив.
📉Сложность:
⌚️Время:
O(n**2)💾Память:
O(1)#algorithms #go
Forwarded from Timur
✅Поиск самого часто встречающегося элемента в векторе на
📚Напишите функцию
и возвращает элемент, который встречается чаще всего.
Если таких элементов несколько, вернуть любой из них.
👁🗨Пример №1:
«
»
// or 1
👁🗨Пример №2:
«
»
// or 2 or 3
👁🗨Пример №3:
«
»
💡Решение:
На картинке
📉Сложность алгоритма:
⌚️Время -
💾Память -
#task #rust
Rust 📚Напишите функцию
most_frequent, которая принимает вектор и возвращает элемент, который встречается чаще всего.
Если таких элементов несколько, вернуть любой из них.
👁🗨Пример №1:
«
[1, 3, 2, 3, 4, 1, 3, 2, 1]»
3 // or 1
👁🗨Пример №2:
«
[1, 1, 2, 2, 3, 3]»
1// or 2 or 3
👁🗨Пример №3:
«
[10, 0, 2, -1, 2]»
2💡Решение:
📉Сложность алгоритма:
⌚️Время -
O(n)💾Память -
O(n)#task #rust