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

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

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

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

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
⚙️ 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);
}
};
🧨 Что выведется при выполнении программы??
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 );
}
Где проблема в данном коде?

Аргумент для sizeof доджен быть *object, потому что в коде подставляется размер указателя а не структуры
⚙️ Задача 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
🔮 С помощью какого методов можно приостановить текущий поток?
Anonymous Quiz
41%
std::thread::sleep
11%
std::thread::terminate
30%
std::this_thread::sleep_for
17%
std::thread::stop
⚙️ Задача 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;
}
};
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Задача 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;
}
};