C
C# | LeetCode
@easy_c_sharp_task3.4K подп.
222просмотров
6.6%от подписчиков
25 марта 2026 г.
statsScore: 244
Задача: 1198. Find Smallest Common Element in All Rows Сложность: medium Дана матрица mat размером m x n, где каждая строка отсортирована в строго возрастающем порядке. Верните наименьший общий элемент во всех строках. Если общего элемента нет, верните -1. Пример: Input: mat = [[1,2,3,4,5],[2,4,5,8,10],[3,5,7,9,11],[1,3,5,7,9]] Output: 5 👨‍💻 Алгоритм: 1⃣Инициализация переменных: Инициализируйте массив позиций pos, переменную для текущего максимального значения cur_max и счетчик cnt нулями. 2⃣Итерация по строкам матрицы: Для каждой строки: - увеличивайте позицию в строке, пока значение не станет равным или больше текущего максимума. - если достигли конца строки, возвращайте -1. - если значение равно текущему максимуму, увеличивайте счетчик. - в противном случае, сбросьте счетчик до 1 и обновите текущий максимум. 3⃣Проверка счетчика: Если счетчик равен количеству строк, возвращайте текущий максимум. Повторите шаг 2. 😎 Решение: public class Solution { public int SmallestCommonElement(int[][] mat) { int n = mat.Length, m = mat[0].Length; int[] pos = new int[n]; int cur_max = 0, cnt = 0; while (true) { for (int i = 0; i < n; ++i) { while (pos[i] < m && mat[i][pos[i]] < cur_max) { ++pos[i]; } if (pos[i] >= m) { return -1; } if (mat[i][pos[i]] != cur_max) { cnt = 1; cur_max = mat[i][pos[i]]; } else if (++cnt == n) { return cur_max; } } } } } Ставь 👍 и забирай 📚 Базу знаний
222
просмотров
1694
символов
Да
эмодзи
Нет
медиа

Другие посты @easy_c_sharp_task

Все посты канала →
Задача: 1198. Find Smallest Common Element in All Rows Сложн — @easy_c_sharp_task | PostSniper