Техническое собеседование
-
Задача 1 На вход дается 2D матрица из 0 и 1. Сначала идут 0, потом после 1-й единицы идут только единицы. Нужно найти массив с наибольшим кол-вом единиц и вывести кол-во 1. Решение за O(n+k) по времени.
Примеры:
grid = [ ["0","0","0","1","1"], ["0","0","1","1","1"], ["0","0","0","0","1"], ["0","1","1","1","1"] ] result: 4grid = [ ["0","0","0","0","0"], ["0","0","0","0","0"], ["0","0","0","0","0"], ["0","0","0","0","0"] ] result: 0Идея решения: Нужно идти всегда справа налево. В первом массиве находишь самую левую единицу и дальше спускаешься вниз по массивам и смотришь этот индекс (индекс самой левой единицы в первом массиве). Если по индексу этому в нижнем массиве — 0 — то идешь ниже, если 1 — то снова ищешь самую левую единицу в массиве и дальше уже сравниваешь с новым индексом. В ответе: длина_массива — самый_левый_найденный_индекс_единицы