Решил сразу после того, как Александр показал решение.
@VasillaRobocraft2 ай бұрын
Ну ты даёшь
@no-user-found2 ай бұрын
🎉
@nighthunter282 ай бұрын
а че так можно было? ну ты мозК!
@vorobey662 ай бұрын
кажется, это первая задача, которую я смог решить самостоятельно, причем очень быстро плюс мораль от таких видео, спасибо!
@keklola2 ай бұрын
На самом деле какая то очень простая задача, решилась буквально за минуту. Единственное над чем задумался(на пару секунд), могут ли они стать все положительными, но сразу в голову пришла мысль, какое число отрицательных чисел было изначально - четное или нечетное, и тут все сразу стало понятно. Не думаю, что эта задача является какой то решающей или что-то в этом роде, скорее наоборот самая первая и простая для отсевки совсем ленивых, либо же условие было посложнее, чем здесь показано.
@RAZRAB-dev2 ай бұрын
Классическая ситуация когда придумываешь сложное решение а тут всё так просто
@artyomzolotoverkhov84682 ай бұрын
Офигеть, я бы не догадался до решения. Спасибо, Саша
@evgenijb1862 ай бұрын
5:06 Поправка: решением будет не "сумма модулей всех элементов минус модуль самого маленького числа", а "сумма модулей всех элементов минус ДВА модуля самого маленького числа". Это "самое маленькое число" тоже присутствует в "сумме модулей всех элементов".
@ps-0372 ай бұрын
Саша, ты светлая голова! Удачи тебе. Сыну показываю твои задачи. Не все догоняет, но схватывает некоторые идеи.
@iJaVolo2 ай бұрын
1) Спасибо за контент! Тебя очень интересно смотреть) А у меня случилось то самое чувство, когда пришёл домой очень сильно пьяный с позавчера, и решил задачу с собеседования в it-гигант первым же способом, который пришёл в голову - посчитать количество отрицательных, если четное, то наверняка будет способ превратить всех соседей в четные. Если нечетное количество отрицательных, значит находим наименьшее в матрице, и оно будет единственным отрицательным. Таков быстрый ответ без проверки. Потом ещё пару минут на паузе проверял своё предположение, и в итоге оказался прав)) И вот то самое чувство в том, что бухой я случайно с первой попытки мгновенно решил задачу на логику от его величества Amazon, а в реальной жизни я 2 года что-то там пишу на питоне и мне вообще не светит такая корпорация)))))
@YuriiLutsyk03042 ай бұрын
Действительно, всё просто, но не просто! Очень интересно было)
@panfilovandrey2 ай бұрын
Интересная задача, ты всегда очень хорошо объясняешь. Лайк.
@neruinfo1662 ай бұрын
Единственная задача на твоем канале, которую я решил в уме быстрее, чем закончилось видео 😆
@Arxpetro2 ай бұрын
Вау!!! Гениальный подход!
@perceptron98342 ай бұрын
Дошло только после простых примеров 😊
@ksushakiseleva2644Ай бұрын
Прекрасный разбор! Спасибо!
@kaily_kain2 ай бұрын
поняла условие задачи, когда увидела решение. до этого думала, что нужно написать алгоритм, который будет выполнять эти самые преобразования и приведет матрицу к искомому виду за минимальное количество итераций) уже почти алгоритм составила)
@Fact-Frenzy.2 ай бұрын
Решил задачу сам, пойду подам CV в amazon
@mxygame77872 ай бұрын
Легендарная доска!
@dlcgaming26422 ай бұрын
красава жду ещё подобных приколов а ещё если есть просто какой-то задачник или книга было бы круто
@drugged_monkey2 ай бұрын
задачник называется leetcode
@BBoh-q9h2 ай бұрын
Жду каждое твоё видео!!
@natsurukasumi33702 ай бұрын
Цікава та корисна задача, дякую)
@МихаилГоловин-щ7ж2 ай бұрын
Классная задачка! Спасибо!
@yzhishko2 ай бұрын
Решение на 4, но не на 5. Есть 4 оптимизации которые можно сделать. Чтобы работало для произвольных чисел и быстрее: 1) Не производить подсчет negactiveCount, а создать болевую переменную oddNegative = false и побитово присваивать oddNagative = !oddNegative каждый раз когда встречаешь отрицательное число 2) Изначально min присвоить нулю (в случае пустой матрицы) или модулю matrix[0][0] 3) sum может выйти за пределы int очень легко, нужно использовать bigint (судя по стилистике, это Java code) 4) 2-ды вычисляется Math.abs(num) можно это значение присвоить отдельной переменной
@yzhishko2 ай бұрын
@@downloadtrump4816 0 для случая если матрица пуста, если нет, тогда matrix[0][0]
@ЮрийБ-о6е2 ай бұрын
Задача выполнена наиболее оптимальным путём. На синтаксис и глубинное знание языка никто смотреть не будет, собеседующий смотрит и оценивает как кандидат думает и всё. Можно конечно быть core разработчиком языка, вылизывать всё до идеала, но это в отличие от знания того как решать Вам ничем не поможет. Очень частый кейс, когда интервьюер вообще не знает ЯП который Вы используете
@St1ggy2 ай бұрын
@@downloadtrump4816почему это будет неверный ответ? Если матрица состоит только из положительных, то мы ничего и не отнимем
@yzhishko2 ай бұрын
@@ЮрийБ-о6е все зависит от того, на какую поизицию вы идете. Меня взяли на работу, именно из-за того, что я один из всех кандитатов подмечал такие мелочи помимо решения оптимальным путем.
@ЮрийБ-о6е2 ай бұрын
@@yzhishko в гугл? я говорил применимо к бигтехам, где просто ищут логически подкованных независимо от позиции. Собеседующие в таких компаниях как правило не к себе в команду набирают. А если Вас собесит тимлид у которого Вы будете работать, то тут решает всё, я бы даже сказал что эмпатия больше чем остальное
@leomysky2 ай бұрын
Отличное видео, спасибо за ролик
@TTTuTTT2 ай бұрын
Сразу пришло решение.
@МаксимАндреев-щ7б2 ай бұрын
Берём самый верхний минус, если таких несколько, то самый левый из них. От него можно избавиться, если это не элемент в правом нижнем углу, причём так, что знаки элементов выше рассматриваемого и левее рассматриваемого в его строке останутся положительными. Тогда в зависимости от чётности числа отрицательных чисел в конце получим, что все числа положительны (тогда задача решена), либо в правом нижнем углу число с отрицательным знаком, тогда будем менять знаки по цепочке от него до самого маленького по модулю числа. Если в исходных данных есть 0, то его можно рассматривать как число любого знака, и тогда ответ - сумма модулей всех чисел. То есть: 1) если есть 0, то ответ - сумма модулей элементов матрицы 2) если нет 0, и количество отрицательных чисел чётное - сумма модулей элементов матрицы 3) если нет 0, и количество отрицательных чисел нечётное - сумма модулей элементов матрицы минус 2 модуля наименьшего по модулю элемента
@ФёдорПоцелуев-й7с2 ай бұрын
Задачку решил и горд собой, но от меня почему-то ускользнуло, что нам важно лишь итоговое число, и поэтому я честно написал алгоритм преобразования матрицы🙈
@user-fe9pz9wo5b21 күн бұрын
Действительно тут больше логика, чем программирование. Вариант на JS: const maxMatrixSum = matrix => { const list = [].concat(...matrix); const listAbs = list.map(e => Math.abs(e)); const negatives = list.reduce((acc, cur) => acc + +(cur < 0), 0); const sum = listAbs.reduce((acc, cur) => acc + cur); if (negatives % 2 === 0) return sum; return sum - Math.min(...listAbs) * 2; }
@arturio102 ай бұрын
кайф просто! спасибо за такие задачи! просто логически разбивая (также у себя на доске в комнате) на квадраты 2х2 и решил реально за минут 15! да и (псевдо)код реально тут простой P.S. насчет sum - 2m не догадался сам, только после просмотра видео k = 0 m = M[0, 0] s = 0 for i = 1... m: for j = 0 ... n: e = M[i, j] if (e < 0) k = k + 1 if (|e| < m) m = |e| s = s + |e| return (k mod 2 == 0) ? s : s - 2m
@dmitriy44152 ай бұрын
Прикольная задача!
@TheKrivetkoАй бұрын
Полезно. Но я бы вместо счетчика отрицательных сделал бы просто булево isNegativeLeft = false и в цикле просто в условии негативного значения isNegativeLeft = !isNegativeLeft. Ну и как по мне дважды брать по модулю не имеет смысл. Можно просто значение min = INT_MIN и в том же условии по негативному значению брать максимум между min и текущим значением матрицы. Ну и в конце нужно два мин прибавить (в моем случае мин отрицательное всегда)
@remonterkz-60622 ай бұрын
6:50 На каком именно шаге мы прибавили в сумму значение min?
@tusman4ik2 ай бұрын
С лету догадался.. Спасибо олпроге, хоть где-то пригодится..
@ДмитрийПименов-ж5ш2 ай бұрын
простоя задача на инварианты. вообще ничего сложного import numpy as np def max_matrix_sum(x): x = np.array(x) return np.sum(abs(x)) if np.sum(x < 0) % 2 == 0 else np.sum(abs(x)) - 2 * np.min(abs(x))
@roller_nagibator228914 күн бұрын
Классный видос, но не понял почему отнимаем два раза min😢 Спасибо за разъяснения 🤙🏻
@khurshidddbek2 ай бұрын
Спасибо
@user-wk9tu7rt2t2 ай бұрын
Решил ещё на этапе превью. Посмотрел и убедился, что всё действительно просто. Код не оптимален, но пойдёт.
@OleksandrKucherenko2 ай бұрын
what should we do with the 0 (zero) ? minus ZERO, does not exists, so if we found ZERO in matrix - we should return SUM of all ABS items
@bumbam1232 ай бұрын
очень хорошая задача, кстати. Реально помогает отделить оголтелых кодеров от разумных и полезных сотрудников. Еще одна похожая "даны два больших неотсортированных массива чисел, различающихся одним числом. Найти это число." UPD: числа не по порядку, все абсолютно перемешаны, так что с позицией ничего не выйдет сделать
@incios2 ай бұрын
хеши?
@AlexanderSmetannikov2 ай бұрын
xor?
@undermind41332 ай бұрын
От суммы первого отнимаем сумму второго?
@dolotube2 ай бұрын
Условие не четкое - массивы не отсортированы, но одинаково или нет?
@bumbam1232 ай бұрын
@@dolotube хорошее наблюдение, но на собесах обычно не бывает четких условий. Вежливое и вдумчивое выяснение деталей задачи (и пересказ ее своими словами) - важная часть решения
@gr1ver9352 ай бұрын
Красотааа
@ASUS234UA2 ай бұрын
Можете меня поздравить, я видимо гожусь на работу в Амазон. А вообще, что это за задача? - уровень начальной школы. И код здесь написать несложно, даже если ты полный чайник. Просто более скилловый программист сделает его куда эффективнее. Даже я со своим ультра-базовым Java, который проходил, когда думал учиться на программиста, смог бы решить задачу и написать код.
@alexanderspeshilov8392 ай бұрын
Возможно, вы путаете "необходимо" и "достаточно". Даже если предположить, что вам попадётся та же задача, то алгосекции и задачки на сообразительность зачастую необходимы для прохождения, но не достаточны.
@ASUS234UA2 ай бұрын
@@alexanderspeshilov839 возможно вы забыли, с какой целью писали этот комментарий, потому что он ни о чем и противоречит законам русского языка. Достаточно - менее сильное определение от "необходимо". Так что нужно с нуля переписывать то, что вы написали. И дать немного уточнений, как проходит интервью. Потому что, как правило, это резюме, разговор + тех. задание. Вы как будто какой-то целый тест/экзамен описываете. Там формат конкурса проходит?
@sentimientalАй бұрын
@@ASUS234UAДружище, а ты все продолжаешь путать «достаточно» и «необходимо». Видимо собеседник решил не тратить время на объяснение, ибо понял твой уровень языка) Достаточно подразумевает ОТСУТСТВИЕ дополнительных условий. Необходимо лишь подразумевает, что это один из критериев. Исходя из твоего ПЕРВОГО комментария, ты видимо решил, что годишься в амазон, хотя ты лишь годишься на хороший фидбек от одного из 5 интервьюеров и то только по одной задаче (обычно их две). Вопросы по принципам лидерства, систем дизайн и еще 5 алгособесов ты видимо прошел автоматически вместе с простенькой логической задачей) Люди идут к бигтеху годами, а ты обесценил их старания тем, что справился с одной из тысяч задач, которые там даются)
@ASUS234UAАй бұрын
@@sentimiental Видимо кому-то нечем заняться и он пришел рыгать... Относительно второй части комментария: где я говорил, что "решил, что гожусь в Амазон"? Очевидный подтекст совсем не видим? Начиная с оригинального комментария, заканчивая последним, я и спрашиваю как это работает и что там происходит. Если у тебя настолько пусто в голове, что ты даже этого не понял, то к твоему *мнению* я точно прислушиваться не буду. Особенно учитывая цель твоего комментария. Отвечать не буду, можешь не стараться. Я уже понял с каким "интеллектуалом" имею дело.
@ТимурЗакуанов2 ай бұрын
Я бы по своей логике изначально посчитал четное или не четное количество минусов. в случае если четное мы сможем от них избавиться. если не четное то 1 минус всеже останется. и нужно сделать так чтобы это был минимальный по значению элемент. и от этого уже построил 2 алгоритма
@ЮраВолченко-у8г2 ай бұрын
Как код работает если в матрице все элементы по модулю больше 1000_000_000?
@alexanderspeshilov8392 ай бұрын
Если вы про выбор начального значения min, то с одной стороны - да, стоило взять что-то более обоснованное (максимальное значение типа int или первый элемент матрицы, например). Но в данном случае этот выбор не влияет на корректность кода. Для почти всех нетривиальных матриц, а точнее для матриц с общим количеством элементов больше 2, раньше сломается суммирование. А это только случаи матриц 2х1 и 1х2. Для матрицы 5х5 - а именно так было в исходной задаче - если минимальное по модулю число больше 85_899_346, то уже переполнение при суммировании будет.
@MrThebestzorro2 ай бұрын
Забавная задача. Тут реально 90% это логика.
@Павел-у7ф2е2 ай бұрын
Придумал решение за минуту, но вот если бы я не знал что есть лёгкое решение, то возможно бы я запутался
@CarlJohnson-y5j2 ай бұрын
С одной стороны, круто. С другой, такие гении, решающие абстрактного коня в вакууме, весьма тугие в бизнес-задачах, наши HR не задают таких вопросов из-за их бесполезности.
@ВаняПетров-в9ш2 ай бұрын
А если при выборе строки или столбца будут умножаться на -1 все числа строки или столбца 😅? Как такое решить без брутфорса?
@nikitaparfenov67102 ай бұрын
Терпеть не могу алгоритмические задачи и лайв кодинг, но эта задача шикааарна
@vladislavBykov1112 ай бұрын
Не учтен вариант с 0. Если есть 0, то мы можем сделать все числа неотрицательными
@ЮрийБ-о6е2 ай бұрын
пришёл в комменты и увидел что хотел написать сам
@MrOldschoolrocknroll2 ай бұрын
В размышлениях не учтен, но по факту - этого и не требуется: - сумму все равно надо считать, а это означает, что на каждой итерации все равно нужно проверять num на 0 (завести флаг); - Math.min в конечном итоге уже проверяет на 0, если num == 0 - выдаст 0; - Все равно нужно вычислять четность отрицательных чисел, так как в матрице может не быть 0; - После цикла, к проверке четности придется добавить доп. проверку, так как 0 может не быть в матрице. Итого: Проще абстрагироваться от 0.
@ЮрийБ-о6е2 ай бұрын
@@MrOldschoolrocknroll Логично, спасибо. Можно конечно прикопаться и сэкономить парочку операций если добавить такую проверку if (min != 0) Т е если 0 попадается, то начиная со следующей операции инкремент и обновление минимума не производить. Но это уже явно лишнее, спасибо за то, что так расписали
@remonterkz-60622 ай бұрын
как именно проверить эту программу в действии?
@user-fe9pz9wo5b21 күн бұрын
гугли как запустить java код на windows/macos/ubuntu (подставь свою систему)
@triviumfan94112 ай бұрын
Оригинально
@aduditsky2 ай бұрын
Единственное узкое место это значение min. Понятно, что это для упрощения.
@St1ggy2 ай бұрын
Я бы negativeCount заменил на булеву, которую просто тогглил бы в ветке на проверку отрицательного числа, тогда не надо будет писать ещё одну проверку на четность
@СрунАй бұрын
Легкая же, я сразу посчитал количество чисел с минусом, их четное, просто свести минусы все вместе и сократить
@BellaLugoshi2 ай бұрын
ну меня нет ни в амазонах ни в гуглах ни в лондонах, но когда вы прочитали задачу я сразу и не понял что же там за подвох такой кроется если очевидно, что при наличии четных отрицательных пар они просто исчезают сразу, а при наличии нечетных - отрицательным будет минимальное значение. То есть всё решается за один проход по матрице за O(n). Женя, 49 лет XD
@mischa_solt2 ай бұрын
Молодец
@zudwa92802 ай бұрын
гений, просто гений!
@ValihanJumadilov2 ай бұрын
Если в матрице все числа будут больше 1000000000?
@keng_aust2 ай бұрын
Там уже ограничения задачи нужно смотреть. В случае задачи это не особенно важно. Не знаю, на чём он пишет, но обычно у типов чисел есть лимит, и можно минимум приравнять к максимальному значению. В питоне такого нет, поэтому я всегда ставлю минимум и максимум как line[0] или mat[0][0], в зависимости от массива.
@Lammax20122 ай бұрын
За стартовый минимальный можно принять первый элемент матрицы
@ЮрийБ-о6е2 ай бұрын
@@keng_aust float("inf")
@Mcsollo2 ай бұрын
Я еще по превью в видео понял как это решить, меня возьмут в амазон?
@cl1ck8462 ай бұрын
hello there!
@psevdonim2572 ай бұрын
Кто решил эту задачу- молодец, но это Одна из многих и на многих собеседованиях , и на те собеседования надо еще попасть, короче это как пробежать быстро 100 метров и надеяться что эта же скорость будет у вас на марафоне😂
@Legenda_2K17Ай бұрын
Те кто пишут что они смогли это решить легко это как? Я конечно абсолютно не разбираюсь в программировнии, но даже если просто искать решение без программировния я бы никак это не сделал. Единственная идея у меня была когда он сказал, что тут простое решение это просто вокруг кажого минусового числа найти самое маленькое плюсовое и поменять местами. Ну это icq150+ наверное надо для решения
@canniballissimo2 ай бұрын
ну да, по факту только находим итог, не преобразовывая ничего
@nighthunter282 ай бұрын
те кто решал егэ по профильной математике под номер 19 решат эту задачу за несколько секунд
@snikitin322 ай бұрын
В чем прикол, если одно у одного и того тоже числа можно сколь угодно много менять знак
@nyb21532 ай бұрын
на кого не посмотри, один в гугле, другой в амазоне итд откуда такие задачи простые на собесах в такие компании? это задача на уборщика туда?
@user-fe9pz9wo5b21 күн бұрын
а ты думаешь из-за задачки берут туда?
@mariastarkova93172 ай бұрын
Вообще не понимаю как эти задачи решать. Смотрю только потому что парень нравится.
@DmitriyPolyudov2 ай бұрын
Если в матрице есть одно из чисел 0, то не имеет значения четное кол-во отрицательных чисел или нечетное. Мы все числа можем сделать положительными. Этот момент не учтен в решении.
@КіріллПустовий2 ай бұрын
значение min будет 0, так-что никак не повлияет на итоговый результат
@AndriiPetrusha2 ай бұрын
Почему 16 для матрицы 3х3, там вроде 17 должно быть. Досмотрел не до конца (4:24)... но логика мне подсказывает такое решение. По сути не так уж важно, стоят отрицательные числа рядом или нет - их всегда можно "поставить" рядом путём умножения соседних на -1. Поэтому нужно просто тупо считать количество отрицательных чисел - если оно чётное, то просто суммируем всю матрицу, просто каждый элемент берём по модулю. Если число отрицательных чисел нечётное - то находим МАКСИМАЛЬНЫЙ отрицательный элемент (т.е. наиболее близкий к 0 нулю). Опять суммируем всю матрицу (модули элементов) и вычитаем этот МАКСИМАЛЬНЫЙ отрицательный элемент. Вроде всё.... Посмотрю до конца :)
@ktyom2 ай бұрын
Думал будет проще , а тут задача перешла в умножение :/ так не интересно ~ я изначально думал про диагонали и перетаскивание диагоналей 😅✨ можно было бы выбрать самое большое число и просто сложить , так как диагональ проводить не обязательно только по центру. А тут эта ваша логическая логика 🌚
@lesnoy_leo2 ай бұрын
Решил ее сразу после прослушивания условия:) Я гений?)
@iKBAHT2 ай бұрын
Сразу решил
@VoidObj2 ай бұрын
понял смсл задачи по перекидыванию минусов в любое место еще до того, как договорил )) Жаль нет профессии - решатель логических задач 😀😀😀 п.с. насколько мне известно, решение лог. задач слабо коррелирует со скилом самого програмиста 🤗
@AndriiPetrusha2 ай бұрын
А всё... дослушал до 4:53... не учёл, что можно ЛЮБОЙ элемент сделать отрицательным... т.е. для матриц с нечётным количеством отрицательных элементов ищем минимальное по модулю число и его делаем отрицательным
@alexzk32 ай бұрын
Сильно все сложно, std::accumulate(begin, end, 0u, [])(auto a, auto b){return abs(a) + abs(b);});
@АлександрКоновалов-ш1нАй бұрын
Чёт прям подозрительно легко
@ooshkapooshkin80482 ай бұрын
не очень понял решение, зачем в такой простой задачке вообще что то подводить друг к другу? решение для школьников от школьников: нужно гепотетически представить, что если у нас четное число отрицательных чисел, то мы просто все складываем по модулю (то есть все числа просто положительные сразу становятся, так как мы теоретически можем их все взаимно уничтожить т к 2 отрицательных = 2 положительных), и наоборот, если нечетное количество отрицательных чисел, то будет просто 1 отрицательное, а сделать отрицательное можно любое число, значит берем минимальное, решение: в 1 проход по всем элементам массива (цикл в цикле будет, так как многомерная матрица) мы получаем сразу ответ
@АндрейСеменов-н3э2 ай бұрын
😵
@vitya.obolonsky2 ай бұрын
ой бля курсологи))))
@user-alzKfArQ82 ай бұрын
фигня, кто решал пятнашки, тот может не дослушивать
@Lammax20122 ай бұрын
Про вычитание двойного минимального не понял. Зачем? Нужно же просто вычесть минимальный один раз от общей суммы. Да минимальный в сумме есть, его и вычитаем.
@Aurant-2 ай бұрын
1+3=4 , -1+3=2 , 4 - 2*1 = 2
@varchar212 ай бұрын
Тоже не понял зачем. В цикле в sum кладем все подряд по модулю. Таким образом в sum каждый элемент массива попадет один раз и все. Затем проверится количество отрицательных. И если их кол-во нечетное, то отнимется минималка по модулю, которую в цикле посчитали один раз. Это первое. Второе. В примере с маленькими матрицами (которая 3 на 3) на доске, где с элементом со значением -1 сделать ничего нельзя, очевидно же, что максимальная сумма не 16, а 17. Видимо, Саша уже и там вычел дважды минимальное число
@Aurant-2 ай бұрын
@@varchar21 истина не всегда очевидна, возьмите и найдите в ручную сумму всех элементов в той матрице 3х3 и убедитесь, что она равна 16.
@varchar212 ай бұрын
@@Aurant- мы говорим об абсолютном значении элементов? Если да, то сумма вообще 18, нет - то с учетом этой отрицательной единицы 17. Либо сочту за честь, если просветите
@Aurant-2 ай бұрын
@@varchar21 мы говорим о том, что если вы нашли сумму абсолютных значений, то чтобы найти максимальную сумму, где есть один отрицательный элемент, вам нужно дважды вычесть его из абсолютной суммы
@MathPTU2 ай бұрын
типичная задача с олимпиады по математике за 5 класс
@MathPTU2 ай бұрын
ответ был очевиден, если математику не прогуливал
@vasilyh45882 ай бұрын
Как уже задолбало это "то как вы думаете".... Нормально мы думаем. Головой. 99% HR и вот таких вот проверяльщиков - не способны сделать выводы из этого маталгоритмического теста. Человек не умеющий их решать и не видящий за ними смысла - может быть лучшим специалистом, чем тот, кто умеет. У меня знакомый был - задачки решал на загляденье, а программер никакой вышел - пришлось уходить в Scrum masterа. А если человек знает ответ - тогда что тестируется? Он сразу проходит, как "умеющий решать" читер? P.S. По решению: Придумал, сразу после времени 3:10. Мы можем менять знаки у двух числе как угодно долго - ну так нафига вообще это делать? Мы же можем опустить эту операцию как "ничего не значащую" (нам не интересно как долго мы это будем делать, главное, что мы - можем это делать). Выравниваем все элементы в массив и сортируем по модулю от минимума к максимуму, высчитывая при этом количество минусов. 1. Если количество минусов чётное - мы просто суммируем все элементы по модулю. Потому что рано или поздно - мы придём к тому, что все будут положительными. 2. Если количество минусов НЕ чётное - мы суммируем все элементы и вычитаем из них первый самый маленький (то бишь прибавляем минус минимальный элемент по модулю), т.к. после всех смен - останется ровно 1 минус, от которого никак не избавиться. И получается - сама по себе матрица тут нафиг не нужна.
@user-fe9pz9wo5b21 күн бұрын
при чем тут HR, это задача на техническом собесе, а техсобесы ведут не HR, а старшие it-специалисты (лиды/сеньоры). никто не говорил, что такие задачки говорят в полном объеме о специалисте, но они хотя бы могут показать, что у человека работает базовая логика. да и отсеивать как-то надо кандидатов любыми способами, слишком много людей хотят в фаанг. "Человек не умеющий их решать и не видящий за ними смысла - может быть лучшим специалистом" любой может писать код и создать любое приложение, но не каждый может сделать это правильно. Много задач, где нельзя просто писать спагетти кодом, нужно уметь мыслить шире. Посмотри код подобной задачки без включения логики и ужаснешься, такое писать просто нельзя. "задачки решал на загляденье, а программер никакой вышел" не каждый умеющий решать задачки сможет или захочет быть разработчиком, важен интерес к разработке. "А если человек знает ответ - тогда что тестируется?" это только одна из разных задач и один из этапов отбора, которые никак не гарантируют тебе место в фаанг. Отбор поэтому и многоэтапный, чтобы было общее представление о тебе. Да и доля везения тоже играет большую роль конечно же в любых аспектах жизни. Потом если узнают что разраб так себе, то выкинут (если за это время плохо развивался) конечно если ты крутой специалист и это докажешь, то этих вопросов может и не будет. а среди средних спецов есть конкуренция, поэтому их надо как-то отсеивать
@TheFox-16662 ай бұрын
А теперь дополнение к задаче прилетает - сделать визуализацию процесса 1 час, и тут весь код в мусорку, на которую тебе дали 8 часов, так что задача не решена, она просто оптимизирована, и ссаными тряпками на улицу...
@dpoleev2 ай бұрын
Если это Си, то достаточно читать двухмерный массив как одномерный в один цикл.
@djorayevofficial50602 ай бұрын
Java*
@dolotube2 ай бұрын
1. Считаем количество отрицательных чисел. 1.1. Если оно четное, то просто всем отрицательным числам меняем знак. 1.2. Иначе всем отрицательным числам меняем знак, после чего находим наименьшее из чисел и делаем его отрицательным. 1.3. Считаем сумму всех чисел. 2. Теперь думаем, как это решение формализовать в виде алгоритма, в котором обеспечивается миграция минусов друг к другу и к наименьшему. Потому что в условиях задачи есть возможность менять знак только у двух соседних ячеек, а значит нужно как-то хранить координаты, находить ближайших, и в итоге квадратичная сложность покажется недостижимой мечтой. 4:07 Нет, не можете взять два любых, перечитайте условие задачи 0:33, и таким образом остается главная сложность - обеспечить эффективную миграцию ближайших и к наименьшему, так что все мудрствования на тему чета-нечета лишены смысла. Решение с модулями игнорирует условие задачи, решает другую задачу. Это как "зачем изобретать ракету, давайте просто представим, что корабль уже на орбите, вычислим его координаты".
@user-fe9pz9wo5b21 күн бұрын
какие координаты? какая миграция? поэтому и есть подобные задачи на логику, чтобы отсеивать спагетти-кодеров, которые усложняют такие простые задачи) "Нет, не можете взять два любых" - в том-то и дело, что можем. Он же показывает как это сделать, не нарушая условий задачи...
@b0ss19872 ай бұрын
Шляпа которая никогда не понадобится в реальной работе.
@artemkardi45342 ай бұрын
шляпа которой определяют твое логическое мышление и мышление в нестандартных ситуациях, конечно если бы большие компании брали обычных роботяг которые могут писать то что пишут школьники на информатике, то рост у компании был бы куда меньше, еще алгоритмы поднимают твой спектр возможнойстей и гибкости в написании кода, как и находить решение за менее маленькое время выполнения.
@b0ss19872 ай бұрын
сразу видно что ты ничего не понимаешь в программировании. Алгоритмы нужно только при работе с большим объемом данных. Если ты фронтенд то тебе это вообще не нужно, конечно должны быть элементарные знания, но в целом для сраного js или андроид или iOS приложения задротские алгоритмы не нужны. А то что ты умеешь решать всратые логические задачки не означает что ты не будешь писать говнокод.
@hdfroggit30512 ай бұрын
@@b0ss1987будешь писать говнокод, когда будешь например делать линейный поиск в массиве уникальных элементов. Таких примеров куча. Знание алгоритмов помогает писать эффективное решение сразу "на лету"
@ЮрийБ-о6е2 ай бұрын
@@b0ss1987 Я рассуждаю так, если логика развита очень хорошо, то можно практически не готовиться к алгоритмам. Мне кажется на это рассчитывали организаторы когда придумывали такие нудные собесы. Но большинство просто зубрит все эти паттерны алгоритмов, видя в каждой новой задаче задачу о рюкзаках или с двумя указателями не суть (но для этого тоже как никак надо уметь думать) и подстраиваясь под неё. Я согласен насчет того, что алгоритмы не важны если объем данных маленький но как инструмент проверки логики вполне жизнеспособны. Вот вы какого фронтенд дева себе хотите? Который знает на 2 фреймворка больше или который думать умеет? Отучить писать говнокод можно, а вот научить думать имхо очевидно сложнее) Хотел было ещё сказать про фронтов которые фреймворки пишут для анимаций оперируя матрицами и пр чепухой, но это о малое от всех фронтов)
@b0ss198721 күн бұрын
@@user-fe9pz9wo5b вот почему тебе никогда не стать программистом... Весь тот бред который ты написал говорит что не программист.
@wolan4ik2 ай бұрын
ПРОТЕСТУЮ! Задача выполнена не полностью 1:06-1:13 - матрица не преобразована в указанный вид посредством доступной операции смены знаков (это мы сделали в уме???). Мне преподаватель математики за то, что я в уме посчитал, минус 100500 баллов бы влепила @sashalukin + предлагаю решить мод данной задачи - условия те же - модифицировать матрицу(по желанию в уме или алгоритмически) но менять знаки необходимо буквально, т.е. брать знак одного числа и менять со знаком другого, т.е. в парах (1;2) и (-1;-2) знаки остаются, а (-1;2) => (1;-2) и наоборот
@user-fe9pz9wo5b21 күн бұрын
задача выполнена полностью, не нужно ничего тут придумывать лишнего, как уже говорили - задача на логику
@spetz9112 ай бұрын
Это просто дроч. Очевидно как ее решать, только зачем?
@ivormacky50782 ай бұрын
5 минут, бухой и накуренный, сегодняшняя задача дня на литкоде сложнее куда, как мне кажется!)
@АндрейЛарионов-ж3э2 ай бұрын
Я не знаю насколько низкий iq нужен чтобы придумывать решение больше 2 минут. Решение придумал секунд за 12+-. И так очевидно, что любую пару отрицательных чисел можно сделать парой положтельных. И сразу после этого очевидно, что нужно сделать отрицательным число минимальное по модулю. Также очевидно, что если в матрице есть 0, то можно сделать матрицу без отрицаельых чисел. Программу написал за 3 минуты.
@dpoleev2 ай бұрын
Уже усложняешь. достаточно смотреть сколько отрицательных чисел.
@ivanivan37652 ай бұрын
А каким образом потом отнять минимальное, если мы заранее не знаем, какое оно?
@Meelf_Hunter2 ай бұрын
@@ivanivan3765 оч легко же. Проходим по массиву и считаем количетсво отрицательных, дополнительно ищем САМОЕ БЛИЗКОЕ К 0. И все =) Тебе нужны абсолютные значения)
@Meelf_Hunter2 ай бұрын
@@ivanivan3765 у тебя этим минимальным может быть изначально положительное число, просто оно приобретет знак минуса. P.S. не смотрел еще видос, сразу начал решать, буквально минут 5 хватило потратил, а тут человек уже комментарий такой написал
@ivanivan37652 ай бұрын
@@Meelf_Hunter я немного другое имел ввиду. Человек выше написал, что достаточно смотреть, сколько отрицательных. Я же не вижу вариантов ограничиться только этой информацией. Поэтому и написал свой вопрос.
@Meelf_Hunter21 күн бұрын
@@user-fe9pz9wo5b нет, если четное количество отрицательных - считаешь всю сумму (abs). Если нечетное - ищешь минимальный (abs min), считаешь сумму всех чисел и вычитаешь минимальный (abs). Поэтому надо знать, сколько отрицательных. Размер матрицы не влияет никак