Библиотека задач по C++ | тесты, код, задания
5.23K subscribers
576 photos
1 video
162 links
Задачи и тесты по C++ для тренировки и обучения.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/7a480301

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Перемешивание массива

Задача 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;
}
};
Ключевое слово «extern»

Ключевое слово «extern» используется для объявления переменных или функций, которые определены в других файловых единицах (обычно в других исходных файлах или библиотеках). Это позволяет программе получать доступ к переменным или функциям, которые находятся в других местах в коде.

Использование «extern» может быть полезным, когда вы хотите разделить определение переменных или функций между несколькими файлами, чтобы избежать повторного определения и обеспечить правильное связывание (линковку) программы.
Поиск дубликатов

Задача 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();
}
};
Флажки компиляции

Флажки компиляции — это опции или параметры, которые передаются компилятору программного кода для управления процессом компиляции. Компиляторы — это программы, которые преобразуют исходный код программы, написанный на языке программирования, в машинный код или другой формат, который может быть выполнен компьютером.

Флажки компиляции используются для различных целей, таких как оптимизация кода, установка целевой архитектуры, включение или выключение определенных функций и возможностей языка программирования, а также для управления процессом отладки и создания исполняемых файлов.
Задача Перемещение нулей

🔍 Условие
• Необходимо перенести все нули в конец массива, не меняя порядок следования ненулевых элементов
• Сделать всё надо 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++]);
}
}
};
Различие локальной переменной и поля класса с одинаковым именем

Указатель this может быть полезен в случае, когда локальная переменная в методе имеет то же самое имя, что и поле объекта:

void set(int x) { this->x = x; }

Здесь в методе set мы присваиваем полю класса x значение локальной переменной this. Чтобы различить поле класса x и локальную переменную с тем же именем мы используем запись this->x при обращении к полю класса.
Ханойская башня

• Есть три башни. Цель игры состоит в том, чтобы переместить все диски на третью башню, но вы не можете поместить диск большего размера на диск меньшего размера
• Необходимо создать функцию, которая принимает число дисков в качестве аргумента и возвращает минимальное количество шагов, необходимое для завершения игры

Подсказки

• Можно использовать библиотеку <cmath>
• Можно использовать функцию возведения в степень pow

Tower of Hanoi (edabit)

#middle #algorithms #tasks

Решение
#include <cmath>
int towerHanoi(int discs) {
return pow(2, discs) — 1;
}
📋 Windowing method (Метод скользящего окна)

Метод скользящего окна — это подход к решению популярного типа алгоритмических задач

🔍 Принцип работы
• Определите размер окна (количество элементов данных в окне)
• Передвигайте окно по последовательности данных
• Вычисляйте интересующие вас значение
📋 Задача Как найти палиндром

Целое число является палиндромом, если оно читается одинаково как в прямом, так и в обратном направлении. Например, 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);
}
};
Согласно C++ 11, спецификатор noexcept может быть применен к
Anonymous Quiz
16%
Классу
71%
Функции
6%
Переменной
7%
Пространству имен
📋 Задача Простые числа

Создайте функцию, которая находит количество простых чисел до заданного целого числа

📚 Подход к решению
Решето Эратосфена на Си

How Many «Prime Numbers» Are There? (edabit)
Каким будет результат следующего фрагмента кода на C++?
Anonymous Quiz
2%
10.0 5
93%
10 2.5
3%
10.0 5.0
2%
5.0 2.5
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
📋 Изменение букв

- Создайте функцию, которая изменяет буквы на одну вперед (+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;
}
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
Что будет выведено при запуске кода?
Anonymous Quiz
10%
5, 10
70%
1, 11
12%
1, 3
8%
4, 11