🖥 Курс Эффективное использование С++
📚 Лекция 1. Начнем с основ: библиотеки, утилиты, средства разработки и сборка проектов в С++. Присоединяйтесь, чтобы узнать, как максимально эффективно использовать ресурсы вашего проекта!
🔍 Лекция 2. Глубже в тему работы с памятью: избегаем утечек ресурсов с помощью RAII и умных указателей. Узнаем, как управлять памятью без лишних хлопот
➡️ Лекция 3. Переходим к Move semantics, rvalue reference и perfect forwarding. Открываем новые возможности и улучшаем производительность нашего кода
🔄 Лекция 4. Обсудим callbacks: лямбда-выражения, bind и function. Узнаем, как делать наш код более гибким и модульным
🧵 Лекция 5. Многопоточность в C++. Разбираемся с потоками, блокировками, задачами, атомарными операциями и очередями сообщений
💡 Лекция 6. Обзор возможностей современных стандартов C++. Узнаем, какие новшества есть в мире С++ и как они могут улучшить наш код
👉 Ссылка на курс
📚 Лекция 1. Начнем с основ: библиотеки, утилиты, средства разработки и сборка проектов в С++. Присоединяйтесь, чтобы узнать, как максимально эффективно использовать ресурсы вашего проекта!
🔍 Лекция 2. Глубже в тему работы с памятью: избегаем утечек ресурсов с помощью RAII и умных указателей. Узнаем, как управлять памятью без лишних хлопот
➡️ Лекция 3. Переходим к Move semantics, rvalue reference и perfect forwarding. Открываем новые возможности и улучшаем производительность нашего кода
🔄 Лекция 4. Обсудим callbacks: лямбда-выражения, bind и function. Узнаем, как делать наш код более гибким и модульным
🧵 Лекция 5. Многопоточность в C++. Разбираемся с потоками, блокировками, задачами, атомарными операциями и очередями сообщений
💡 Лекция 6. Обзор возможностей современных стандартов C++. Узнаем, какие новшества есть в мире С++ и как они могут улучшить наш код
👉 Ссылка на курс
🔮 Задача FizzBuzz
Сама по себе задача не сложная для решения, но она очень популярная и поэтому о ней стоит знать
Подход к решению
- Можно решить с помощью операторов ветвления
- Для конвертации int в std::string можно использовать std::to_string(...)
Решение
#include <string>
using namespace std;
string fizzBuzz(int num){
if (num % 3 == 0 and num % 5 == 0) {
return «FizzBuzz»;
} else if (num % 3 == 0) {
return «Fizz»;
} else if (num % 5 == 0) {
return «Buzz»;
} else {
return std::to_string(num);
}
}
Сама по себе задача не сложная для решения, но она очень популярная и поэтому о ней стоит знать
Подход к решению
- Можно решить с помощью операторов ветвления
- Для конвертации int в std::string можно использовать std::to_string(...)
Решение
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🔮 Самые частые суффиксы для алгоритмов
• std::*_n — вместо диапазона значений используется количество
• std::*_if — предикат вместо значения
• std::*_copy — результат копируется в новый структуру данных
👉 Ссылка на список алгоритмов
• std::*_n — вместо диапазона значений используется количество
• std::*_if — предикат вместо значения
• std::*_copy — результат копируется в новый структуру данных
👉 Ссылка на список алгоритмов
⚙️ 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
💡Решение
⚙️ Задач 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
💡Решение
⚙️ Найдите нечетное целое число
Напишите функцию, которая принимает массив и находит целое число, которое появляется нечетное количество раз
Подход к решению
- Можно решить с помощью ассоциативного контейнера, просто посчитав количество вхождений
- Также из за того, что нужно найти только одно число то нет необходимости хранить их все, и из-за того, что есть побитовая операция 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;
}
⚙️ Задача 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
💡 Решение
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🧨 Что выведется при выполнении программы??
Anonymous Quiz
40%
true
48%
false
5%
Приложение не соберётся
6%
Упадёт с ошибкой
🔮 Задача 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
Решение
⚙️ 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
Решение
🧨 Что выведется при выполнении программы??
Anonymous Quiz
22%
-127
4%
128
16%
127
56%
Ошибка компиляции
3%
125
🧿 Задача Простая пара
Дан массив целых чисел 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
Решение