🔍 Равенство трех значений
Создайте функцию, которая принимает три целочисленных аргумента (a, b, c) и возвращает количество целых чисел, которые имеют одинаковое значение
📚 Подход к решению
• Предполагается использование условных конструкций (if)
Equality of 3 Values
#junior #algorithms #tasks
💡Решение
int equal(int a, int b, int c) { 
int count = 0; 
if (a == b || a == c) 
count = 2; 
if (b == c) 
if (count < 2) 
count = 2; 
else 
count = 3; 
return count; 
} 
Создайте функцию, которая принимает три целочисленных аргумента (a, b, c) и возвращает количество целых чисел, которые имеют одинаковое значение
📚 Подход к решению
• Предполагается использование условных конструкций (if)
Equality of 3 Values
#junior #algorithms #tasks
💡Решение
🥱11👍4
  Перемешивание массива 
Задача 1470 Shuffle the Array с leetcode
🔍 Условие
Дан массив nums, состоящий из 2n элементов в виде [x1,x2,...,xn,y1,y2,...,yn].
Нужно вернуть массив в виде [x1,y1,x2,y2,...,xn,yn]
📚 Подход к решению
• Из-за того что элемент x и y лежат друг от друга всегда на одинаковом расстоянии, то можно воспользоваться просто арифметической операцией сложения для поиска пары
#junior #algorithms #tasks
💡Решение
class Solution { 
public: 
vector shuffle(vector& nums, int n) { 
vector result; 
for (int i = 0; i < n; ++i) { 
result.push_back(nums[i]); 
result.push_back(nums[i + n]); 
} 
return result; 
} 
}; 
  Задача 1470 Shuffle the Array с leetcode
🔍 Условие
Дан массив nums, состоящий из 2n элементов в виде [x1,x2,...,xn,y1,y2,...,yn].
Нужно вернуть массив в виде [x1,y1,x2,y2,...,xn,yn]
📚 Подход к решению
• Из-за того что элемент x и y лежат друг от друга всегда на одинаковом расстоянии, то можно воспользоваться просто арифметической операцией сложения для поиска пары
#junior #algorithms #tasks
💡Решение
Поиск дубликатов 
Задача 217 Contains Duplicate с leetcode
🔍 Условие
• Учитывая целочисленный массив nums, вернуть true, если хотя бы одно значение появляется как минимум дважды в массиве, и вернуть false, если каждый элемент уникален
📚 Подход к решению
• Из-за того что уникальных элементов меньше или равно исходному размеру входного массива, то можно просто сравнить эти величины
#middle #algorithms #tasks
💡Решение
class Solution { 
public: 
bool containsDuplicate(vector& nums) { 
set testSet(nums.begin(), nums.end()); 
return testSet.size() < nums.size(); 
} 
}; 
  Задача 217 Contains Duplicate с leetcode
🔍 Условие
• Учитывая целочисленный массив nums, вернуть true, если хотя бы одно значение появляется как минимум дважды в массиве, и вернуть false, если каждый элемент уникален
📚 Подход к решению
• Из-за того что уникальных элементов меньше или равно исходному размеру входного массива, то можно просто сравнить эти величины
#middle #algorithms #tasks
💡Решение
Задача Перемещение нулей
🔍 Условие
• Необходимо перенести все нули в конец массива, не меняя порядок следования ненулевых элементов
• Сделать всё надо in-place (на том же самом массиве)
📚 Подход к решению
• Воспользоваться методом двух указателей. Когда один указывает на предыдущий элемент, а другой на следующий. Если предыдущий нулевой, то менять со следующим
#middle #algorithms #tasks
💡Решение
class Solution { 
public: 
void moveZeroes(vector& nums) { 
for (size_t i = 0, j = 0; i < nums.size(); ++i) { 
if (nums[i]) 
swap(nums[i], nums[j++]); 
} 
} 
}; 
🔍 Условие
• Необходимо перенести все нули в конец массива, не меняя порядок следования ненулевых элементов
• Сделать всё надо in-place (на том же самом массиве)
📚 Подход к решению
• Воспользоваться методом двух указателей. Когда один указывает на предыдущий элемент, а другой на следующий. Если предыдущий нулевой, то менять со следующим
#middle #algorithms #tasks
💡Решение
👍9
  Ханойская башня
• Есть три башни. Цель игры состоит в том, чтобы переместить все диски на третью башню, но вы не можете поместить диск большего размера на диск меньшего размера
• Необходимо создать функцию, которая принимает число дисков в качестве аргумента и возвращает минимальное количество шагов, необходимое для завершения игры
Подсказки
• Можно использовать библиотеку <cmath>
• Можно использовать функцию возведения в степень pow
Tower of Hanoi (edabit)
#middle #algorithms #tasks
Решение
#include  <cmath> 
int towerHanoi(int discs) { 
return pow(2, discs) — 1; 
} 
• Есть три башни. Цель игры состоит в том, чтобы переместить все диски на третью башню, но вы не можете поместить диск большего размера на диск меньшего размера
• Необходимо создать функцию, которая принимает число дисков в качестве аргумента и возвращает минимальное количество шагов, необходимое для завершения игры
Подсказки
• Можно использовать библиотеку <cmath>
• Можно использовать функцию возведения в степень pow
Tower of Hanoi (edabit)
#middle #algorithms #tasks
Решение
❤1
  📋 Задача Как найти палиндром
Целое число является палиндромом, если оно читается одинаково как в прямом, так и в обратном направлении. Например, 121 является палиндромом, а 123 — нет
🔍 Условие
• Вернуть true, если x является палиндром и false в противном случае
📚 Подход к решению
• Чтобы понять палиндром это или нет необходимо развернуть число
• Это можно сделать с помощь деления на 10
• При целочисленном делении у нас остаётся число на одну цифру меньше (справа) и в остатке как раз эта цифра
• Цифру из остатка сохраняем
• После того как не осталось цифр в числе собираем новую из остатков (тех цифр которые сохранили
Palindrome Number (leetcode)
#junior #algorithms #tasks
💡Решение
class Solution { 
public: 
bool isPalindrome(int x) { 
if (x < 0) { 
return false; 
} 
long long reversed = 0; 
long long temp = x; 
while (temp != 0) { 
int digit = temp % 10; 
reversed = reversed * 10 + digit; 
temp /= 10; 
} 
return (reversed == x); 
} 
}; 
Целое число является палиндромом, если оно читается одинаково как в прямом, так и в обратном направлении. Например, 121 является палиндромом, а 123 — нет
🔍 Условие
• Вернуть true, если x является палиндром и false в противном случае
📚 Подход к решению
• Чтобы понять палиндром это или нет необходимо развернуть число
• Это можно сделать с помощь деления на 10
• При целочисленном делении у нас остаётся число на одну цифру меньше (справа) и в остатке как раз эта цифра
• Цифру из остатка сохраняем
• После того как не осталось цифр в числе собираем новую из остатков (тех цифр которые сохранили
Palindrome Number (leetcode)
#junior #algorithms #tasks
💡Решение
👍1
  📋 Изменение букв
- Создайте функцию, которая изменяет буквы на одну вперед (+1) или назад (-1) в соответствии с массивом
📚 Подход к решению
- Главной целью является познакомиться с ASCII-кодировкой символов
Tweaking Letters (edabit)
#junior #algorithms #tasks
💡Решение
std::string tweakLetters(std::string s, std::vector arr) { 
for (size_t i = 0; i < arr.size(); i++) 
{ 
int count = arr[i]; 
while (count) { 
s[i] += count; 
if (s[i] < 'a') { 
count += 'a' — s[i]; 
s[i] = 'z'; 
continue; 
} 
if (s[i] > 'z') { 
count -= s[i] — 'z'; 
s[i] = 'a'; 
continue; 
} 
count = 0; 
} 
} 
return s; 
} 
- Создайте функцию, которая изменяет буквы на одну вперед (+1) или назад (-1) в соответствии с массивом
📚 Подход к решению
- Главной целью является познакомиться с ASCII-кодировкой символов
Tweaking Letters (edabit)
#junior #algorithms #tasks
💡Решение
👍1
  ⚙️ camelCase ⇄ snake_case
Создайте две функции toCamelCase() и toSnakeCase(), каждая из которых принимает одну строку и преобразует ее либо в CamelCase, либо в Snake_case
Подход к решению
- Можно решать с помощью регулярных выражений или посимвольного перебора
👉 camelCase ⇄ snake_case (edabit)
#junior #tasks
💡Решение
std::string toCamelCase(std::string str) { 
bool capitalizeNext = false; 
std::string camelCaseStr; 
for (char c : str) { 
if (c == '_') { 
capitalizeNext = true; 
} 
else { 
if (capitalizeNext) { 
camelCaseStr += toupper(c); 
capitalizeNext = false; 
} 
else { 
camelCaseStr += c; 
} 
} 
} 
return camelCaseStr; 
} 
std::string toSnakeCase(std::string str) { 
std::ostringstream snakeCaseStr; 
for (char c : str) { 
if (isupper(c)) { 
snakeCaseStr << '_' << static_cast(tolower(c)); 
} 
else { 
snakeCaseStr << c; 
} 
} 
return snakeCaseStr.str(); 
} 
Создайте две функции toCamelCase() и toSnakeCase(), каждая из которых принимает одну строку и преобразует ее либо в CamelCase, либо в Snake_case
Подход к решению
- Можно решать с помощью регулярных выражений или посимвольного перебора
👉 camelCase ⇄ snake_case (edabit)
#junior #tasks
💡Решение
👍6
  ⚙️ Задач Excel Sheet Column Title (leetcode)
Есть номер столбца columnsNumber, верните соответствующий заголовок столбца, как он отображается в таблице Excel
Пример
Ввод: columnNumber = 1
Вывод: «A»
Ввод: columnNumber = 28
Вывод: «AB»
👉 Excel Sheet Column Title (leetcode)
#junior #tasks
💡Решение
class Solution { 
public: 
std::string convertToTitle(int n) { 
if (n == 0) return «»; 
std::string result; 
const std::string map = «ABCDEFGHIJKLMNOPQRSTUVWXYZ»; 
while (n != 0) { 
result.push_back(map[(n — 1) % 26]); 
n = (n — 1) / 26; 
} 
std::reverse(result.begin(), result.end()); 
return result; 
} 
}; 
Есть номер столбца columnsNumber, верните соответствующий заголовок столбца, как он отображается в таблице Excel
Пример
Ввод: columnNumber = 1
Вывод: «A»
Ввод: columnNumber = 28
Вывод: «AB»
👉 Excel Sheet Column Title (leetcode)
#junior #tasks
💡Решение
👍4
  ⚙️ Найдите нечетное целое число
Напишите функцию, которая принимает массив и находит целое число, которое появляется нечетное количество раз
Подход к решению
- Можно решить с помощью ассоциативного контейнера, просто посчитав количество вхождений
- Также из за того, что нужно найти только одно число то нет необходимости хранить их все, и из-за того, что есть побитовая операция XOR, которая гарантирует, что если дважды применить её к одному и тому же числу, то получится исходное число, можно решить задачу за один проход массива
👉 Find the Odd Integer (edabit)
#junior #tasks
Решение 1
int findOdd(std::vector arr) {
std::map nums;
for (int i = 0; i < arr.size(); ++i) {
nums[arr[i]] += 1;
}
int result = 0;
for (auto num : nums) {
if (num.second % 2 != 0) {
result = num.first;
break;
}
}
return result;
} 
Решение 2
int findOdd(std::vector arr) {
int number = 0;
for (auto a : arr) {
number = number ^ a;
}
return number;
} 
Напишите функцию, которая принимает массив и находит целое число, которое появляется нечетное количество раз
Подход к решению
- Можно решить с помощью ассоциативного контейнера, просто посчитав количество вхождений
- Также из за того, что нужно найти только одно число то нет необходимости хранить их все, и из-за того, что есть побитовая операция XOR, которая гарантирует, что если дважды применить её к одному и тому же числу, то получится исходное число, можно решить задачу за один проход массива
👉 Find the Odd Integer (edabit)
#junior #tasks
Решение 1
std::map nums;
for (int i = 0; i < arr.size(); ++i) {
nums[arr[i]] += 1;
}
int result = 0;
for (auto num : nums) {
if (num.second % 2 != 0) {
result = num.first;
break;
}
}
return result;
}
Решение 2
int number = 0;
for (auto a : arr) {
number = number ^ a;
}
return number;
}
👍3
  ⚙️ Задача Running Sum of 1d Array
Дан массив чисел. Мы определяем текущую сумму массива как RunningSum[i] = sum(nums[0]…nums[i]). В каждой новой ячейке нового массива будет сумма от 0-го элемента и до i-го
👉 Running Sum of 1d Array
#tasks #junior
💡 Решение
class Solution { 
public: 
vector runningSum(vector& nums) { 
vector ans(nums.size()); 
ans[0] = nums[0]; 
for (int i = 1; i < nums.size(); i++) 
ans[i] = ans[i-1] + nums[i]; 
return ans; 
} 
}; 
Дан массив чисел. Мы определяем текущую сумму массива как RunningSum[i] = sum(nums[0]…nums[i]). В каждой новой ячейке нового массива будет сумма от 0-го элемента и до i-го
👉 Running Sum of 1d Array
#tasks #junior
💡 Решение
👍3
  🔮 Задача Sum of v0w3ls
Создайте функцию, которая принимает строку и возвращает сумму гласных, причем для каждой гласной нужно прибавлять своё число (A->4, E->3, I->1, O->0)
👉Sum of v0w3ls (edabit)
#tasks #junior
Решение
int sumOfVowels(std::string str) { 
int count = 0; 
for (char ch : str) { 
ch = std::tolower(ch); 
switch (ch) { 
case 'a': count += 4; break; 
case 'e': count += 3; break; 
case 'i': count += 1; break; 
case 'o': break; 
} 
} 
return count; 
} 
Создайте функцию, которая принимает строку и возвращает сумму гласных, причем для каждой гласной нужно прибавлять своё число (A->4, E->3, I->1, O->0)
👉Sum of v0w3ls (edabit)
#tasks #junior
Решение
🤔7😁1🥱1
  ⚙️ Search in a Binary Search Tree
В задаче требуется реализовать поиск по бинарному дереву
Подход к решению
- Реализуется с помощью рекурсивного алгоритма
- Сначала обходим левое поддерево, а затем правое
#tasks #middle
Решение
class Solution { 
public: 
TreeNode* searchBST(TreeNode* root, int val) { 
if (!root)  
return nullptr; 
if (root->val == val) 
return root; 
if (val < root->val) 
return searchBST(root->left, val); 
else 
return searchBST(root->right, val); 
} 
}; 
В задаче требуется реализовать поиск по бинарному дереву
Подход к решению
- Реализуется с помощью рекурсивного алгоритма
- Сначала обходим левое поддерево, а затем правое
#tasks #middle
Решение
👍2
  🧿 Задача Простая пара
Дан массив целых чисел arr и целое число n. Найдите из данного массива пару чисел [x, y] такую, что x * y = n. Если пара не найдена, вернуть [0, 0]
👉A Simple Pair (edabit)
#middle #tasks
Решение
std::pair simplePair(std::vector arr, int n) { 
for (int i = 0; i < arr.size()-1; ++i) { 
for (int j = i+1; j < arr.size(); ++j) { 
if (arr[i] * arr[j] == n) { 
return std::make_pair(arr[i], arr[j]); 
} 
} 
} 
return std::make_pair( 0, 0 ); 
} 
Дан массив целых чисел arr и целое число n. Найдите из данного массива пару чисел [x, y] такую, что x * y = n. Если пара не найдена, вернуть [0, 0]
👉A Simple Pair (edabit)
#middle #tasks
Решение
👍1
  ⚙️ Задача How Many Numbers Are Smaller Than the Current Number
Для каждого элемента массива посчитать количество элементов меньше и вывести результат в виде массива
Пример
Input: nums = [8,1,2,2,3]
Output: [4,0,1,1,3]
Ограничения
- Значение элемента лежит между значениями 0 и 100
- Длина самого массива не меньше 2-х и не больше 500-а
👉How Many Numbers Are Smaller Than the Current Number (leetcode)
#tasks #middle
Решение
class Solution { 
public: 
vector smallerNumbersThanCurrent(vector& nums) { 
vector ans; 
vector nums_count(101); 
for (const int num : nums){ 
++nums_count[num]; 
} 
for (int i = 1; i <= 100; ++i) { 
nums_count[i] += nums_count[i — 1]; 
} 
for (const int num : nums) { 
ans.push_back(num == 0 ? 0 : nums_count[num — 1]); 
} 
return ans; 
} 
}; 
Для каждого элемента массива посчитать количество элементов меньше и вывести результат в виде массива
Пример
Input: nums = [8,1,2,2,3]
Output: [4,0,1,1,3]
Ограничения
- Значение элемента лежит между значениями 0 и 100
- Длина самого массива не меньше 2-х и не больше 500-а
👉How Many Numbers Are Smaller Than the Current Number (leetcode)
#tasks #middle
Решение
👍2
  ⏰ Задача Minimum Number of Operations to Move All Balls to Each Box (leetcode)
Во входных данных даётся массив, каждый элемент массива это коробка. В коробке может быть шарик. Необходимо посчитать сколько нужно действий чтобы переложить все шарики в одну коробку (минимальное количество), для каждой коробки
Пример 1
Input: boxes = «110»
Output: [1,1,3]
Пример 2
Input: boxes = «001011»
Output: [11,8,5,4,3,4]
👉 Ссылка
#tasks #middle
Решение (brute force)
class Solution { 
public: 
std::vector minOperations(std::string boxes) { 
std::vector result; 
for (int i = 0; i < boxes.length(); ++i) { 
int count = 0; 
for (int j = 0; j < boxes.length(); ++j) { 
if (boxes[j] == '1') { 
count += std::abs(i — j); 
} 
} 
result.push_back(count); 
} 
return result; 
} 
}; 
Во входных данных даётся массив, каждый элемент массива это коробка. В коробке может быть шарик. Необходимо посчитать сколько нужно действий чтобы переложить все шарики в одну коробку (минимальное количество), для каждой коробки
Пример 1
Input: boxes = «110»
Output: [1,1,3]
Пример 2
Input: boxes = «001011»
Output: [11,8,5,4,3,4]
👉 Ссылка
#tasks #middle
Решение (brute force)
😁4🤔2
  