🖥 Курс Эффективное использование С++
📚 Лекция 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
Решение
⚙️ Задача Even or Odd: Which is Greater?
Создайте функцию, определяющую, больше ли сумма всех чётных цифр, чем сумма всех нечетных цифр в строке цифр
Если сумма нечетных цифр больше суммы четных, верните «Odd is greater than Even»
Если сумма четных цифр больше суммы нечетных, верните «Even is greater than Odd»
Если сумма четных и нечетных цифр равна, верните «Even and Odd are the same»
👉Even or Odd: Which is Greater?
#junior
❗️Решение
std::string evenOrOdd(std::string str) {
int sumOdd = 0;
int sumEven= 0;
for (auto ch : str) {
int num = ch - '0';
if (num % 2 == 0) {
sumEven += num;
}
else {
sumOdd += num;
}
}
if (sumOdd == sumEven) {
return "Even and Odd are the same";
}
else if (sumOdd > sumEven) {
return "Odd is greater than Even";
}
else {
return "Even is greater than Odd";
}
}wbah
Создайте функцию, определяющую, больше ли сумма всех чётных цифр, чем сумма всех нечетных цифр в строке цифр
Если сумма нечетных цифр больше суммы четных, верните «Odd is greater than Even»
Если сумма четных цифр больше суммы нечетных, верните «Even is greater than Odd»
Если сумма четных и нечетных цифр равна, верните «Even and Odd are the same»
👉Even or Odd: Which is Greater?
#junior
❗️Решение
int sumOdd = 0;
int sumEven= 0;
for (auto ch : str) {
int num = ch - '0';
if (num % 2 == 0) {
sumEven += num;
}
else {
sumOdd += num;
}
}
if (sumOdd == sumEven) {
return "Even and Odd are the same";
}
else if (sumOdd > sumEven) {
return "Odd is greater than Even";
}
else {
return "Even is greater than Odd";
}
}wbah