Logo
TGCATALOG
Catalog Collections Blog
C# LeetCode - tasks

C# LeetCode - tasks

LeetCode C#.

No ratings
622
31.10.2026
622
31.10.2026
No ratings
622
31.10.2026
Safe redirect via bot
О канале

LeetCode C#.

Подписчиков 3,158
Тематика Technology
Язык English
Ссылка t.me/easy_c_sharp_task

We also recommend

Kekaton AI | Voiceover and voice clone
Kekaton AI | Voiceover and voice clone
Bot

AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.

Description

LeetCode tasks in C#.

Latest posts

C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 1028. Recover a Tree From Preorder Traversal Сложность: hard Мы запускаем предварительный поиск в глубину (DFS) на корне двоичного дерева. На каждый узел в этом обходе мы выводим D тире (где D - глубина этого узла), а затем выводим значение этого узла.Если глубина узла равна D, то глубина его ближайшего потомка равна D + 1.Глубина корневого узла равна 0. Если у узла есть только один ребенок, то этот ребенок гарантированно является левым ребенком. Учитывая выходной обход этого обхода, восстановите дерево и верните его корень. Пример: Input: traversal = "1-2--3--4-5--6--7" Output: [1,2,5,3,4,6,7] 👨💻 Алгоритм: 1⃣Разбор строки: Пройдите по строке, чтобы определить уровни узлов и их значения. Используйте два счетчика: один для отслеживания текущего уровня (количество тире), второй для значения узла. 2⃣Создание узлов: Создайте новые узлы на основе уровня и значения из строки. Для каждого нового узла найдите его родительский узел из стека и добавьте узел как левого или правого ребенка. 3⃣Построение дерева: Используйте стек для отслеживания текущих узлов на каждом уровне глубины. Когда узел создан, добавьте его в стек. Если узел завершен, уберите его из стека. 😎 Решение: public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { val = x; } } public class Solution { public TreeNode RecoverFromPreorder(string S) { var stack = new Stack(); for (int i = 0; i < S.Length;) { int level = 0; while (i < S.Length && S[i] == '-') { level++; i++; } int value = 0; while (i < S.Length && char.IsDigit(S[i])) { value = value * 10 + (S[i] - '0'); i++; } TreeNode node = new TreeNode(value); if (level == stack.Count) { if (stack.Count > 0) { stack.Peek().left = node; } } else { while (level != stack.Count) { stack.Pop(); } stack.Peek().right = node; } stack.Push(node); } while (stack.Count > 1) { stack.Pop(); } return stack.Peek(); } } Ставь 👍 и забирай 📚 Базу знаний
C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 1539. Kth Missing Positive Number Сложность: easy Дан массив arr из положительных целых чисел, отсортированных в строго возрастающем порядке, и целое число k. Верните k-й положительный целочисленный элемент, который отсутствует в этом массиве. Пример: Input: arr = [2,3,4,7,11], k = 5 Output: 9 Explanation: The missing positive integers are [1,5,6,8,9,10,12,13,...]. The 5th missing positive integer is 9. 👨💻 Алгоритм: 1⃣Проверьте, является ли k-й отсутствующий номер меньше первого элемента массива. Если это так, верните k. Уменьшите k на количество положительных чисел, отсутствующих до начала массива: k -= arr[0] - 1. 2⃣Итерируйтесь по элементам массива. На каждом шаге вычисляйте количество отсутствующих положительных чисел между i+1-м и i-м элементами: currMissing = arr[i + 1] - arr[i] - 1. Сравните k с currMissing. Если k
C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 1203. Sort Items by Groups Respecting Dependencies Сложность: hard Есть n предметов, каждый из которых принадлежит нулевой или одной из m групп, где group[i] — это группа, к которой принадлежит i-й предмет, и равно -1, если i-й предмет не принадлежит никакой группе. Предметы и группы имеют индексацию с нуля. Группа может не иметь ни одного предмета. Верните отсортированный список предметов таким образом: Предметы, принадлежащие одной группе, расположены рядом друг с другом в отсортированном списке. Существуют некоторые отношения между этими предметами, где beforeItems[i] — это список, содержащий все предметы, которые должны быть перед i-м предметом в отсортированном массиве (слева от i-го предмета). Верните любое решение, если существует более одного решения, и верните пустой список, если решения не существует. Пример: Input: n = 8, m = 2, group = [-1,-1,1,0,0,1,0,-1], beforeItems = [[],[6],[5],[6],[3,6],[],[],[]] Output: [6,3,4,1,5,2,0,7] 👨💻 Алгоритм: 1⃣Инициализация и создание графов: Присвоить уникальные идентификаторы группам для элементов без группы. Создать два графа: item_graph для элементов и group_graph для групп. Также создать два массива для учета входящих рёбер для элементов и групп. 2⃣Построение графов: Пройти по массиву beforeItems и добавить зависимости между элементами в item_graph, увеличивая счётчик входящих рёбер. Если элементы принадлежат разным группам, добавить зависимость между группами в group_graph, увеличивая счётчик входящих рёбер. 3⃣Топологическая сортировка и создание итогового списка: Выполнить топологическую сортировку для элементов и групп. Если есть цикл, вернуть пустой список. Создать итоговый список, добавляя отсортированные элементы каждой группы. 😎 Решение: public class Solution { public int[] SortItems(int n, int m, int[] group, IList beforeItems) { int groupId = m; for (int i = 0; i < n; i++) if (group[i] == -1) group[i] = groupId++; var itemGraph = new Dictionary(); var groupGraph = new Dictionary(); int[] itemIndegree = new int[n], groupIndegree = new int[groupId]; for (int i = 0; i < n; i++) itemGraph[i] = new List(); for (int i = 0; i < groupId; i++) groupGraph[i] = new List(); for (int curr = 0; curr < n; curr++) { foreach (var prev in beforeItems[curr]) { itemGraph[prev].Add(curr); itemIndegree[curr]++; if (group[curr] != group[prev]) { groupGraph[group[prev]].Add(group[curr]); groupIndegree[group[curr]]++; } } } var itemOrder = TopologicalSort(itemGraph, itemIndegree); var groupOrder = TopologicalSort(groupGraph, groupIndegree); if (itemOrder.Count == 0 || groupOrder.Count == 0) return new int[0]; var orderedGroups = new Dictionary(); foreach (var item in itemOrder) { if (!orderedGroups.ContainsKey(group[item])) orderedGroups[group[item]] = new List(); orderedGroups[group[item]].Add(item); } var answerList = new List(); foreach (var groupIndex in groupOrder) { if (orderedGroups.ContainsKey(groupIndex)) answerList.AddRange(orderedGroups[groupIndex]); } return answerList.ToArray(); } private List TopologicalSort(Dictionary graph, int[] indegree) { var visited = new List(); var stack = new Stack(); foreach (var key in graph.Keys) if (indegree[key] == 0) stack.Push(key); while (stack.Count > 0) { var curr = stack.Pop(); visited.Add(curr); foreach (var next in graph[curr]) if (--indegree[next] == 0) stack.Push(next); } return visited.Count == graph.Keys.Count ? visited : new List(); } } Ставь 👍 и забирай 📚 Базу знаний
C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 360. Sort Transformed Array Сложность: medium Дан отсортированный массив целых чисел nums и три целых числа a, b и c. Примените квадратичную функцию вида f(x) = ax^2 + bx + c к каждому элементу nums[i] в массиве и верните массив в отсортированном порядке. Пример: Input: nums = [-4,-2,2,4], a = 1, b = 3, c = 5 Output: [3,9,15,33] 👨💻 Алгоритм: 1⃣Преобразование и сортировка Преобразуем каждый элемент массива nums по квадратичной функции f(x) = ax^2 + bx + c и сохраняем результаты в массив transformed. Используем алгоритм поразрядной сортировки для сортировки массива transformed. 2⃣Поразрядная сортировка Находим максимальное значение по модулю в массиве для определения количества цифр. Применяем поразрядную сортировку к массиву transformed. 3⃣Сортировка по цифре Для каждой цифры (разряда) используем подсчет для сортировки массива. 😎 Решение: using System; using System.Collections.Generic; using System.Linq; public class Solution { public int[] SortTransformedArray(int[] nums, int a, int b, int c) { int[] transformed = nums.Select(x => a * x * x + b * x + c).ToArray(); RadixSort(transformed); return transformed; } private void RadixSort(int[] array) { int maxElement = array.Select(x => Math.Abs(x)).Max(); int placeValue = 1; while (maxElement / placeValue > 0) { CountingSortByDigit(array, placeValue); placeValue *= 10; } var negatives = array.Where(x => x < 0).OrderBy(x => x).ToArray(); var positives = array.Where(x => x >= 0).OrderBy(x => x).ToArray(); Array.Copy(negatives, 0, array, 0, negatives.Length); Array.Copy(positives, 0, array, negatives.Length, positives.Length); } private void CountingSortByDigit(int[] array, int placeValue) { int n = array.Length; int[] output = new int[n]; int[] count = new int[10]; foreach (int num in array) { int digit = (Math.Abs(num) / placeValue) % 10; count[digit]++; } for (int i = 1; i < 10; i++) { count[i] += count[i - 1]; } for (int i = n - 1; i >= 0; i--) { int num = array[i]; int digit = (Math.Abs(num) / placeValue) % 10; output[count[digit] - 1] = num; count[digit]--; } for (int i = 0; i < n; i++) { array[i] = output[i]; } } } Ставь 👍 и забирай 📚 Базу знаний
C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 905. Sort Array By Parity Сложность: easy Если задан целочисленный массив nums, переместите все четные числа в начало массива, а затем все нечетные. Верните любой массив, удовлетворяющий этому условию. Пример: Input: nums = [3,1,2,4] Output: [2,4,3,1] 👨💻 Алгоритм: 1⃣Создать два списка: один для четных чисел, другой для нечетных. 2⃣Пройтись по массиву и добавить четные числа в один список, а нечетные в другой. 3⃣Объединить два списка и вернуть результат. 😎 Решение: public class Solution { public int[] SortArrayByParity(int[] nums) { List evens = new List(); List odds = new List(); foreach (int num in nums) { if (num % 2 == 0) { evens.Add(num); } else { odds.Add(num); } } evens.AddRange(odds); return evens.ToArray(); } } Ставь 👍 и забирай 📚 Базу знаний
C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 674. Longest Continuous Increasing Subsequence Сложность: easy Дан неотсортированный массив целых чисел nums, верните длину самой длинной непрерывной возрастающей подпоследовательности (т.е. подмассива). Подпоследовательность должна быть строго возрастающей. Непрерывная возрастающая подпоследовательность определяется двумя индексами l и r (l < r) так, что она имеет вид [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] и для каждого l = nums[i]. В этом случае начинается новая возрастающая подпоследовательность с nums[i], и мы сохраняем такой i в переменной anchor. 2⃣Например, если nums = [7, 8, 9, 1, 2, 3], то anchor начинается с 0 (nums[anchor] = 7) и затем устанавливается на anchor = 3 (nums[anchor] = 1). Независимо от значения anchor, мы записываем кандидата на ответ длиной i - anchor + 1, длина подмассива nums[anchor], nums[anchor+1], ..., nums[i], и наш ответ обновляется соответствующим образом. 3⃣Возвращаем максимальную длину найденной непрерывной возрастающей подпоследовательности. 😎 Решение: public class Solution { public int FindLengthOfLCIS(int[] nums) { int ans = 0, anchor = 0; for (int i = 0; i < nums.Length; ++i) { if (i > 0 && nums[i-1] >= nums[i]) anchor = i; ans = Math.Max(ans, i - anchor + 1); } return ans; } } Ставь 👍 и забирай 📚 Базу знаний
C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 1283. Find the Smallest Divisor Given a Threshold Сложность: medium Дан массив целых чисел nums и целое число threshold. Мы выберем положительный целый делитель, разделим все элементы массива на него и суммируем результат деления. Найдите наименьший делитель, такой что результат, упомянутый выше, меньше или равен threshold. Каждый результат деления округляется до ближайшего большего целого числа. (Например: 7/3 = 3 и 10/2 = 5). Гарантируется, что решение существует. Пример: Input: nums = [1,2,5,9], threshold = 6 Output: 5 Explanation: We can get a sum to 17 (1+2+5+9) if the divisor is 1. If the divisor is 4 we can get a sum of 7 (1+1+2+3) and if the divisor is 5 the sum will be 5 (1+1+1+2). 👨💻 Алгоритм: 1⃣Найдите максимальный элемент массива nums и сохраните его в переменной maxElement. 2⃣Итерация по всем делителям от 1 до maxElement: Инициализируйте две переменные: sumOfDivisionResults для хранения суммы результатов деления и thresholdExceeded для указания, превышен ли порог. Итерация по всем элементам массива nums: добавьте результат деления, округленного до ближайшего большего целого числа, в переменную sumOfDivisionResults. Если сумма превышает threshold, установите thresholdExceeded в true и прекратите итерацию по массиву nums. 3⃣Проверьте, был ли превышен порог: Если порог не был превышен, текущий делитель является наименьшим делителем, поэтому верните его. Если не найдено возможного делителя, верните -1. 😎 Решение: public class Solution { public int SmallestDivisor(int[] nums, int threshold) { int maxElement = nums.Max(); for (int divisor = 1; divisor threshold) { thresholdExceeded = false; break; } } if (thresholdExceeded) { return divisor; } } return -1; } } Ставь 👍 и забирай 📚 Базу знаний
C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 1099. Two Sum Less Than K Сложность: easy Дан массив целых чисел nums и целое число k. Верните максимальную сумму, такую что существуют i < j, при которых nums[i] + nums[j] = sum и sum < k. Если не существует таких i и j, удовлетворяющих этому условию, верните -1. Пример: Input: nums = [34,23,1,24,75,33,54,8], k = 60 Output: 58 Explanation: We can use 34 and 24 to sum 58 which is less than 60. 👨💻 Алгоритм: 1⃣Отсортируйте массив. 2⃣Установите указатели: левый на начало массива, правый на конец. 3⃣Пока левый указатель меньше правого: Если сумма элементов по указателям меньше k, обновите максимальную сумму и сдвиньте левый указатель вправо. Иначе сдвиньте правый указатель влево. Верните максимальную сумму. 😎 Решение: public class Solution { public int TwoSumLessThanK(int[] nums, int k) { int answer = -1; int[] count = new int[1001]; foreach (int num in nums) { count[num]++; } int lo = 1, hi = 1000; while (lo = k || count[hi] == 0) { hi--; } else { if (count[lo] > (lo < hi ? 0 : 1)) { answer = Math.Max(answer, lo + hi); } lo++; } } return answer; } } Ставь 👍 и забирай 📚 Базу знаний
C# LeetCode - tasks
C# LeetCode - tasks
🔒Открыть пост
и посмотреть медиа
Задача: 1278. Palindrome Partitioning III Сложность: hard Вам дана строка s, содержащая строчные буквы, и целое число k. Вам нужно: Сначала заменить некоторые символы s на другие строчные английские буквы. Затем разделить s на k непустых непересекающихся подстрок так, чтобы каждая подстрока была палиндромом. Верните минимальное количество символов, которое нужно изменить, чтобы разделить строку. Пример: Input: s = "abc", k = 2 Output: 1 👨💻 Алгоритм: 1⃣Используйте динамическое программирование для вычисления количества изменений, необходимых для превращения любой подстроки в палиндром. 2⃣Используйте еще одно динамическое программирование для разбиения строки на k палиндромических подстрок с минимальным количеством изменений. 3⃣Верните минимальное количество изменений, найденное во втором шаге. 😎 Решение: public class Solution { public int MinChangesToMakePalindrome(string s, int k) { int n = s.Length; int MinChangeToPalindrome(string s, int i, int j) { int changes = 0; while (i < j) { if (s[i] != s[j]) { changes++; } i++; j--; } return changes; } int[,] dp1 = new int[n, n]; for (int length = 1; length
C# LeetCode - tasks
FAQ

Open C# LeetCode - tasks in Telegram and press the Start button. No separate registration is required.

Yes. The service is designed to be straightforward: open the resource, follow the on-screen instructions and start using it.

No. You can use C# LeetCode - tasks directly in Telegram unless the resource description says otherwise.

Access depends on the resource. Check the current information in Telegram after opening C# LeetCode - tasks.

The exact features depend on the resource. Open C# LeetCode - tasks to see its current functions, content and access conditions.
Subscriber dynamics
+-1.0% last 30 days
Current
3,158
Month ago
3,190
Average growth
+-1 / day
Updated
5 hours ago

Reviews for channel C# LeetCode - tasks

Log in to leave a review

Only registered users can share their opinion.

No reviews yet

Be the first to share your impression of this resource!

Similar resources

Loading
Switch to Light Theme
Home Catalog Collections Blog Login