Задача на Логику из Собеседования в Amazon

  Рет қаралды 17,826

Саша Лукин

Саша Лукин

Күн бұрын

Пікірлер: 150
@zudwa9280
@zudwa9280 3 ай бұрын
Решил сразу после того, как Александр показал решение.
@VasillaRobocraft
@VasillaRobocraft 3 ай бұрын
Ну ты даёшь
@no-user-found
@no-user-found 3 ай бұрын
🎉
@nighthunter28
@nighthunter28 2 ай бұрын
а че так можно было? ну ты мозК!
@vorobey66
@vorobey66 3 ай бұрын
кажется, это первая задача, которую я смог решить самостоятельно, причем очень быстро плюс мораль от таких видео, спасибо!
@keklola
@keklola 3 ай бұрын
На самом деле какая то очень простая задача, решилась буквально за минуту. Единственное над чем задумался(на пару секунд), могут ли они стать все положительными, но сразу в голову пришла мысль, какое число отрицательных чисел было изначально - четное или нечетное, и тут все сразу стало понятно. Не думаю, что эта задача является какой то решающей или что-то в этом роде, скорее наоборот самая первая и простая для отсевки совсем ленивых, либо же условие было посложнее, чем здесь показано.
@RAZRAB-dev
@RAZRAB-dev 3 ай бұрын
Классическая ситуация когда придумываешь сложное решение а тут всё так просто
@evgenijb186
@evgenijb186 3 ай бұрын
5:06 Поправка: решением будет не "сумма модулей всех элементов минус модуль самого маленького числа", а "сумма модулей всех элементов минус ДВА модуля самого маленького числа". Это "самое маленькое число" тоже присутствует в "сумме модулей всех элементов".
@artyomzolotoverkhov8468
@artyomzolotoverkhov8468 3 ай бұрын
Офигеть, я бы не догадался до решения. Спасибо, Саша
@iJaVolo
@iJaVolo 3 ай бұрын
1) Спасибо за контент! Тебя очень интересно смотреть) А у меня случилось то самое чувство, когда пришёл домой очень сильно пьяный с позавчера, и решил задачу с собеседования в it-гигант первым же способом, который пришёл в голову - посчитать количество отрицательных, если четное, то наверняка будет способ превратить всех соседей в четные. Если нечетное количество отрицательных, значит находим наименьшее в матрице, и оно будет единственным отрицательным. Таков быстрый ответ без проверки. Потом ещё пару минут на паузе проверял своё предположение, и в итоге оказался прав)) И вот то самое чувство в том, что бухой я случайно с первой попытки мгновенно решил задачу на логику от его величества Amazon, а в реальной жизни я 2 года что-то там пишу на питоне и мне вообще не светит такая корпорация)))))
@ps-037
@ps-037 3 ай бұрын
Саша, ты светлая голова! Удачи тебе. Сыну показываю твои задачи. Не все догоняет, но схватывает некоторые идеи.
@kaily_kain
@kaily_kain 2 ай бұрын
поняла условие задачи, когда увидела решение. до этого думала, что нужно написать алгоритм, который будет выполнять эти самые преобразования и приведет матрицу к искомому виду за минимальное количество итераций) уже почти алгоритм составила)
@neruinfo166
@neruinfo166 3 ай бұрын
Единственная задача на твоем канале, которую я решил в уме быстрее, чем закончилось видео 😆
@YuriiLutsyk0304
@YuriiLutsyk0304 3 ай бұрын
Действительно, всё просто, но не просто! Очень интересно было)
@panfilovandrey
@panfilovandrey 3 ай бұрын
Интересная задача, ты всегда очень хорошо объясняешь. Лайк.
@Fact-Frenzy.
@Fact-Frenzy. 3 ай бұрын
Решил задачу сам, пойду подам CV в amazon
@perceptron9834
@perceptron9834 3 ай бұрын
Дошло только после простых примеров 😊
@dlcgaming2642
@dlcgaming2642 3 ай бұрын
красава жду ещё подобных приколов а ещё если есть просто какой-то задачник или книга было бы круто
@drugged_monkey
@drugged_monkey 3 ай бұрын
задачник называется leetcode
@Arxpetro
@Arxpetro 3 ай бұрын
Вау!!! Гениальный подход!
@МаксимАндреев-щ7б
@МаксимАндреев-щ7б 3 ай бұрын
Берём самый верхний минус, если таких несколько, то самый левый из них. От него можно избавиться, если это не элемент в правом нижнем углу, причём так, что знаки элементов выше рассматриваемого и левее рассматриваемого в его строке останутся положительными. Тогда в зависимости от чётности числа отрицательных чисел в конце получим, что все числа положительны (тогда задача решена), либо в правом нижнем углу число с отрицательным знаком, тогда будем менять знаки по цепочке от него до самого маленького по модулю числа. Если в исходных данных есть 0, то его можно рассматривать как число любого знака, и тогда ответ - сумма модулей всех чисел. То есть: 1) если есть 0, то ответ - сумма модулей элементов матрицы 2) если нет 0, и количество отрицательных чисел чётное - сумма модулей элементов матрицы 3) если нет 0, и количество отрицательных чисел нечётное - сумма модулей элементов матрицы минус 2 модуля наименьшего по модулю элемента
@user-fe9pz9wo5b
@user-fe9pz9wo5b Ай бұрын
Действительно тут больше логика, чем программирование. Вариант на 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; }
@natsurukasumi3370
@natsurukasumi3370 3 ай бұрын
Цікава та корисна задача, дякую)
@ФёдорПоцелуев-й7с
@ФёдорПоцелуев-й7с 3 ай бұрын
Задачку решил и горд собой, но от меня почему-то ускользнуло, что нам важно лишь итоговое число, и поэтому я честно написал алгоритм преобразования матрицы🙈
@arturio10
@arturio10 2 ай бұрын
кайф просто! спасибо за такие задачи! просто логически разбивая (также у себя на доске в комнате) на квадраты 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
@BBoh-q9h
@BBoh-q9h 2 ай бұрын
Жду каждое твоё видео!!
@yzhishko
@yzhishko 3 ай бұрын
Решение на 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) можно это значение присвоить отдельной переменной
@yzhishko
@yzhishko 3 ай бұрын
@@downloadtrump4816 0 для случая если матрица пуста, если нет, тогда matrix[0][0]
@ЮрийБ-о6е
@ЮрийБ-о6е 3 ай бұрын
Задача выполнена наиболее оптимальным путём. На синтаксис и глубинное знание языка никто смотреть не будет, собеседующий смотрит и оценивает как кандидат думает и всё. Можно конечно быть core разработчиком языка, вылизывать всё до идеала, но это в отличие от знания того как решать Вам ничем не поможет. Очень частый кейс, когда интервьюер вообще не знает ЯП который Вы используете
@St1ggy
@St1ggy 3 ай бұрын
@@downloadtrump4816почему это будет неверный ответ? Если матрица состоит только из положительных, то мы ничего и не отнимем
@yzhishko
@yzhishko 3 ай бұрын
@@ЮрийБ-о6е все зависит от того, на какую поизицию вы идете. Меня взяли на работу, именно из-за того, что я один из всех кандитатов подмечал такие мелочи помимо решения оптимальным путем.
@ЮрийБ-о6е
@ЮрийБ-о6е 3 ай бұрын
@@yzhishko в гугл? я говорил применимо к бигтехам, где просто ищут логически подкованных независимо от позиции. Собеседующие в таких компаниях как правило не к себе в команду набирают. А если Вас собесит тимлид у которого Вы будете работать, то тут решает всё, я бы даже сказал что эмпатия больше чем остальное
@-X-Ray-
@-X-Ray- 2 ай бұрын
Классная задача, спасибо за рассказ
@TTTuTTT
@TTTuTTT 3 ай бұрын
Сразу пришло решение.
@ДмитрийПименов-ж5ш
@ДмитрийПименов-ж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))
@МихаилГоловин-щ7ж
@МихаилГоловин-щ7ж 3 ай бұрын
Классная задачка! Спасибо!
@TheKrivetko
@TheKrivetko 2 ай бұрын
Полезно. Но я бы вместо счетчика отрицательных сделал бы просто булево isNegativeLeft = false и в цикле просто в условии негативного значения isNegativeLeft = !isNegativeLeft. Ну и как по мне дважды брать по модулю не имеет смысл. Можно просто значение min = INT_MIN и в том же условии по негативному значению брать максимум между min и текущим значением матрицы. Ну и в конце нужно два мин прибавить (в моем случае мин отрицательное всегда)
@user-wk9tu7rt2t
@user-wk9tu7rt2t 3 ай бұрын
Решил ещё на этапе превью. Посмотрел и убедился, что всё действительно просто. Код не оптимален, но пойдёт.
@ТимурЗакуанов
@ТимурЗакуанов 2 ай бұрын
Я бы по своей логике изначально посчитал четное или не четное количество минусов. в случае если четное мы сможем от них избавиться. если не четное то 1 минус всеже останется. и нужно сделать так чтобы это был минимальный по значению элемент. и от этого уже построил 2 алгоритма
@leomysky
@leomysky 3 ай бұрын
Отличное видео, спасибо за ролик
@roller_nagibator2289
@roller_nagibator2289 Ай бұрын
Классный видос, но не понял почему отнимаем два раза min😢 Спасибо за разъяснения 🤙🏻
@tusman4ik
@tusman4ik 2 ай бұрын
С лету догадался.. Спасибо олпроге, хоть где-то пригодится..
@bumbam123
@bumbam123 3 ай бұрын
очень хорошая задача, кстати. Реально помогает отделить оголтелых кодеров от разумных и полезных сотрудников. Еще одна похожая "даны два больших неотсортированных массива чисел, различающихся одним числом. Найти это число." UPD: числа не по порядку, все абсолютно перемешаны, так что с позицией ничего не выйдет сделать
@incios
@incios 3 ай бұрын
хеши?
@AlexanderSmetannikov
@AlexanderSmetannikov 3 ай бұрын
xor?
@undermind4133
@undermind4133 3 ай бұрын
От суммы первого отнимаем сумму второго?
@dolotube
@dolotube 3 ай бұрын
Условие не четкое - массивы не отсортированы, но одинаково или нет?
@bumbam123
@bumbam123 3 ай бұрын
@@dolotube хорошее наблюдение, но на собесах обычно не бывает четких условий. Вежливое и вдумчивое выяснение деталей задачи (и пересказ ее своими словами) - важная часть решения
@remonterkz-6062
@remonterkz-6062 2 ай бұрын
6:50 На каком именно шаге мы прибавили в сумму значение min?
@CarlJohnson-y5j
@CarlJohnson-y5j 3 ай бұрын
С одной стороны, круто. С другой, такие гении, решающие абстрактного коня в вакууме, весьма тугие в бизнес-задачах, наши HR не задают таких вопросов из-за их бесполезности.
@MrThebestzorro
@MrThebestzorro 3 ай бұрын
Забавная задача. Тут реально 90% это логика.
@nikitaparfenov6710
@nikitaparfenov6710 3 ай бұрын
Терпеть не могу алгоритмические задачи и лайв кодинг, но эта задача шикааарна
@Павел-у7ф2е
@Павел-у7ф2е 3 ай бұрын
Придумал решение за минуту, но вот если бы я не знал что есть лёгкое решение, то возможно бы я запутался
@OleksandrKucherenko
@OleksandrKucherenko 2 ай бұрын
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
@dmitriy4415
@dmitriy4415 3 ай бұрын
Прикольная задача!
@ЮраВолченко-у8г
@ЮраВолченко-у8г 3 ай бұрын
Как код работает если в матрице все элементы по модулю больше 1000_000_000?
@alexanderspeshilov839
@alexanderspeshilov839 2 ай бұрын
Если вы про выбор начального значения min, то с одной стороны - да, стоило взять что-то более обоснованное (максимальное значение типа int или первый элемент матрицы, например). Но в данном случае этот выбор не влияет на корректность кода. Для почти всех нетривиальных матриц, а точнее для матриц с общим количеством элементов больше 2, раньше сломается суммирование. А это только случаи матриц 2х1 и 1х2. Для матрицы 5х5 - а именно так было в исходной задаче - если минимальное по модулю число больше 85_899_346, то уже переполнение при суммировании будет.
@aduditsky
@aduditsky 3 ай бұрын
Единственное узкое место это значение min. Понятно, что это для упрощения.
@vladislavBykov111
@vladislavBykov111 3 ай бұрын
Не учтен вариант с 0. Если есть 0, то мы можем сделать все числа неотрицательными
@ЮрийБ-о6е
@ЮрийБ-о6е 3 ай бұрын
пришёл в комменты и увидел что хотел написать сам
@MrOldschoolrocknroll
@MrOldschoolrocknroll 3 ай бұрын
В размышлениях не учтен, но по факту - этого и не требуется: - сумму все равно надо считать, а это означает, что на каждой итерации все равно нужно проверять num на 0 (завести флаг); - Math.min в конечном итоге уже проверяет на 0, если num == 0 - выдаст 0; - Все равно нужно вычислять четность отрицательных чисел, так как в матрице может не быть 0; - После цикла, к проверке четности придется добавить доп. проверку, так как 0 может не быть в матрице. Итого: Проще абстрагироваться от 0.
@ЮрийБ-о6е
@ЮрийБ-о6е 3 ай бұрын
@@MrOldschoolrocknroll Логично, спасибо. Можно конечно прикопаться и сэкономить парочку операций если добавить такую проверку if (min != 0) Т е если 0 попадается, то начиная со следующей операции инкремент и обновление минимума не производить. Но это уже явно лишнее, спасибо за то, что так расписали
@Срун
@Срун 2 ай бұрын
Легкая же, я сразу посчитал количество чисел с минусом, их четное, просто свести минусы все вместе и сократить
@khurshidddbek
@khurshidddbek 3 ай бұрын
Спасибо
@St1ggy
@St1ggy 3 ай бұрын
Я бы negativeCount заменил на булеву, которую просто тогглил бы в ветке на проверку отрицательного числа, тогда не надо будет писать ещё одну проверку на четность
@ВаняПетров-в9ш
@ВаняПетров-в9ш 3 ай бұрын
А если при выборе строки или столбца будут умножаться на -1 все числа строки или столбца 😅? Как такое решить без брутфорса?
@psevdonim257
@psevdonim257 3 ай бұрын
Кто решил эту задачу- молодец, но это Одна из многих и на многих собеседованиях , и на те собеседования надо еще попасть, короче это как пробежать быстро 100 метров и надеяться что эта же скорость будет у вас на марафоне😂
@remonterkz-6062
@remonterkz-6062 2 ай бұрын
как именно проверить эту программу в действии?
@user-fe9pz9wo5b
@user-fe9pz9wo5b Ай бұрын
гугли как запустить java код на windows/macos/ubuntu (подставь свою систему)
@canniballissimo
@canniballissimo 3 ай бұрын
ну да, по факту только находим итог, не преобразовывая ничего
@gr1ver935
@gr1ver935 3 ай бұрын
Красотааа
@mariastarkova9317
@mariastarkova9317 3 ай бұрын
Вообще не понимаю как эти задачи решать. Смотрю только потому что парень нравится.
@nighthunter28
@nighthunter28 2 ай бұрын
те кто решал егэ по профильной математике под номер 19 решат эту задачу за несколько секунд
@ASUS234UA
@ASUS234UA 3 ай бұрын
Можете меня поздравить, я видимо гожусь на работу в Амазон. А вообще, что это за задача? - уровень начальной школы. И код здесь написать несложно, даже если ты полный чайник. Просто более скилловый программист сделает его куда эффективнее. Даже я со своим ультра-базовым Java, который проходил, когда думал учиться на программиста, смог бы решить задачу и написать код.
@alexanderspeshilov839
@alexanderspeshilov839 2 ай бұрын
Возможно, вы путаете "необходимо" и "достаточно". Даже если предположить, что вам попадётся та же задача, то алгосекции и задачки на сообразительность зачастую необходимы для прохождения, но не достаточны.
@ASUS234UA
@ASUS234UA 2 ай бұрын
@@alexanderspeshilov839 возможно вы забыли, с какой целью писали этот комментарий, потому что он ни о чем и противоречит законам русского языка. Достаточно - менее сильное определение от "необходимо". Так что нужно с нуля переписывать то, что вы написали. И дать немного уточнений, как проходит интервью. Потому что, как правило, это резюме, разговор + тех. задание. Вы как будто какой-то целый тест/экзамен описываете. Там формат конкурса проходит?
@sentimiental
@sentimiental 2 ай бұрын
⁠@@ASUS234UAДружище, а ты все продолжаешь путать «достаточно» и «необходимо». Видимо собеседник решил не тратить время на объяснение, ибо понял твой уровень языка) Достаточно подразумевает ОТСУТСТВИЕ дополнительных условий. Необходимо лишь подразумевает, что это один из критериев. Исходя из твоего ПЕРВОГО комментария, ты видимо решил, что годишься в амазон, хотя ты лишь годишься на хороший фидбек от одного из 5 интервьюеров и то только по одной задаче (обычно их две). Вопросы по принципам лидерства, систем дизайн и еще 5 алгособесов ты видимо прошел автоматически вместе с простенькой логической задачей) Люди идут к бигтеху годами, а ты обесценил их старания тем, что справился с одной из тысяч задач, которые там даются)
@ASUS234UA
@ASUS234UA 2 ай бұрын
@@sentimiental Видимо кому-то нечем заняться и он пришел рыгать... Относительно второй части комментария: где я говорил, что "решил, что гожусь в Амазон"? Очевидный подтекст совсем не видим? Начиная с оригинального комментария, заканчивая последним, я и спрашиваю как это работает и что там происходит. Если у тебя настолько пусто в голове, что ты даже этого не понял, то к твоему *мнению* я точно прислушиваться не буду. Особенно учитывая цель твоего комментария. Отвечать не буду, можешь не стараться. Я уже понял с каким "интеллектуалом" имею дело.
@triviumfan9411
@triviumfan9411 3 ай бұрын
Оригинально
@Mcsollo
@Mcsollo 3 ай бұрын
Я еще по превью в видео понял как это решить, меня возьмут в амазон?
@snikitin32
@snikitin32 3 ай бұрын
В чем прикол, если одно у одного и того тоже числа можно сколь угодно много менять знак
@Legenda_2K17
@Legenda_2K17 2 ай бұрын
Те кто пишут что они смогли это решить легко это как? Я конечно абсолютно не разбираюсь в программировнии, но даже если просто искать решение без программировния я бы никак это не сделал. Единственная идея у меня была когда он сказал, что тут простое решение это просто вокруг кажого минусового числа найти самое маленькое плюсовое и поменять местами. Ну это icq150+ наверное надо для решения
@ValihanJumadilov
@ValihanJumadilov 3 ай бұрын
Если в матрице все числа будут больше 1000000000?
@keng_aust
@keng_aust 3 ай бұрын
Там уже ограничения задачи нужно смотреть. В случае задачи это не особенно важно. Не знаю, на чём он пишет, но обычно у типов чисел есть лимит, и можно минимум приравнять к максимальному значению. В питоне такого нет, поэтому я всегда ставлю минимум и максимум как line[0] или mat[0][0], в зависимости от массива.
@Lammax2012
@Lammax2012 3 ай бұрын
За стартовый минимальный можно принять первый элемент матрицы
@ЮрийБ-о6е
@ЮрийБ-о6е 3 ай бұрын
@@keng_aust float("inf")
@DmitriyPolyudov
@DmitriyPolyudov 3 ай бұрын
Если в матрице есть одно из чисел 0, то не имеет значения четное кол-во отрицательных чисел или нечетное. Мы все числа можем сделать положительными. Этот момент не учтен в решении.
@КіріллПустовий
@КіріллПустовий 3 ай бұрын
значение min будет 0, так-что никак не повлияет на итоговый результат
@lesnoy_leo
@lesnoy_leo 3 ай бұрын
Решил ее сразу после прослушивания условия:) Я гений?)
@nyb2153
@nyb2153 2 ай бұрын
на кого не посмотри, один в гугле, другой в амазоне итд откуда такие задачи простые на собесах в такие компании? это задача на уборщика туда?
@user-fe9pz9wo5b
@user-fe9pz9wo5b Ай бұрын
а ты думаешь из-за задачки берут туда?
@BellaLugoshi
@BellaLugoshi 3 ай бұрын
ну меня нет ни в амазонах ни в гуглах ни в лондонах, но когда вы прочитали задачу я сразу и не понял что же там за подвох такой кроется если очевидно, что при наличии четных отрицательных пар они просто исчезают сразу, а при наличии нечетных - отрицательным будет минимальное значение. То есть всё решается за один проход по матрице за O(n). Женя, 49 лет XD
@mischa_solt
@mischa_solt 3 ай бұрын
Молодец
@zudwa9280
@zudwa9280 3 ай бұрын
гений, просто гений!
@AndriiPetrusha
@AndriiPetrusha 3 ай бұрын
А всё... дослушал до 4:53... не учёл, что можно ЛЮБОЙ элемент сделать отрицательным... т.е. для матриц с нечётным количеством отрицательных элементов ищем минимальное по модулю число и его делаем отрицательным
@ktyom
@ktyom 3 ай бұрын
Думал будет проще , а тут задача перешла в умножение :/ так не интересно ~ я изначально думал про диагонали и перетаскивание диагоналей 😅✨ можно было бы выбрать самое большое число и просто сложить , так как диагональ проводить не обязательно только по центру. А тут эта ваша логическая логика 🌚
@alexzk3
@alexzk3 2 ай бұрын
Сильно все сложно, std::accumulate(begin, end, 0u, [])(auto a, auto b){return abs(a) + abs(b);});
@cl1ck846
@cl1ck846 3 ай бұрын
hello there!
@AndriiPetrusha
@AndriiPetrusha 3 ай бұрын
Почему 16 для матрицы 3х3, там вроде 17 должно быть. Досмотрел не до конца (4:24)... но логика мне подсказывает такое решение. По сути не так уж важно, стоят отрицательные числа рядом или нет - их всегда можно "поставить" рядом путём умножения соседних на -1. Поэтому нужно просто тупо считать количество отрицательных чисел - если оно чётное, то просто суммируем всю матрицу, просто каждый элемент берём по модулю. Если число отрицательных чисел нечётное - то находим МАКСИМАЛЬНЫЙ отрицательный элемент (т.е. наиболее близкий к 0 нулю). Опять суммируем всю матрицу (модули элементов) и вычитаем этот МАКСИМАЛЬНЫЙ отрицательный элемент. Вроде всё.... Посмотрю до конца :)
@VoidObj
@VoidObj 3 ай бұрын
понял смсл задачи по перекидыванию минусов в любое место еще до того, как договорил )) Жаль нет профессии - решатель логических задач 😀😀😀 п.с. насколько мне известно, решение лог. задач слабо коррелирует со скилом самого програмиста 🤗
@АлександрКоновалов-ш1н
@АлександрКоновалов-ш1н 2 ай бұрын
Чёт прям подозрительно легко
@user-KXAxoe66vg12g
@user-KXAxoe66vg12g 3 ай бұрын
фигня, кто решал пятнашки, тот может не дослушивать
@Lammax2012
@Lammax2012 3 ай бұрын
Про вычитание двойного минимального не понял. Зачем? Нужно же просто вычесть минимальный один раз от общей суммы. Да минимальный в сумме есть, его и вычитаем.
@Aurant-
@Aurant- 3 ай бұрын
1+3=4 , -1+3=2 , 4 - 2*1 = 2
@varchar21
@varchar21 3 ай бұрын
Тоже не понял зачем. В цикле в sum кладем все подряд по модулю. Таким образом в sum каждый элемент массива попадет один раз и все. Затем проверится количество отрицательных. И если их кол-во нечетное, то отнимется минималка по модулю, которую в цикле посчитали один раз. Это первое. Второе. В примере с маленькими матрицами (которая 3 на 3) на доске, где с элементом со значением -1 сделать ничего нельзя, очевидно же, что максимальная сумма не 16, а 17. Видимо, Саша уже и там вычел дважды минимальное число
@Aurant-
@Aurant- 3 ай бұрын
@@varchar21 истина не всегда очевидна, возьмите и найдите в ручную сумму всех элементов в той матрице 3х3 и убедитесь, что она равна 16.
@varchar21
@varchar21 3 ай бұрын
@@Aurant- мы говорим об абсолютном значении элементов? Если да, то сумма вообще 18, нет - то с учетом этой отрицательной единицы 17. Либо сочту за честь, если просветите
@Aurant-
@Aurant- 3 ай бұрын
@@varchar21 мы говорим о том, что если вы нашли сумму абсолютных значений, то чтобы найти максимальную сумму, где есть один отрицательный элемент, вам нужно дважды вычесть его из абсолютной суммы
@iKBAHT
@iKBAHT 3 ай бұрын
Сразу решил
@ooshkapooshkin8048
@ooshkapooshkin8048 3 ай бұрын
не очень понял решение, зачем в такой простой задачке вообще что то подводить друг к другу? решение для школьников от школьников: нужно гепотетически представить, что если у нас четное число отрицательных чисел, то мы просто все складываем по модулю (то есть все числа просто положительные сразу становятся, так как мы теоретически можем их все взаимно уничтожить т к 2 отрицательных = 2 положительных), и наоборот, если нечетное количество отрицательных чисел, то будет просто 1 отрицательное, а сделать отрицательное можно любое число, значит берем минимальное, решение: в 1 проход по всем элементам массива (цикл в цикле будет, так как многомерная матрица) мы получаем сразу ответ
@АндрейСеменов-н3э
@АндрейСеменов-н3э 3 ай бұрын
😵
@dolotube
@dolotube 3 ай бұрын
1. Считаем количество отрицательных чисел. 1.1. Если оно четное, то просто всем отрицательным числам меняем знак. 1.2. Иначе всем отрицательным числам меняем знак, после чего находим наименьшее из чисел и делаем его отрицательным. 1.3. Считаем сумму всех чисел. 2. Теперь думаем, как это решение формализовать в виде алгоритма, в котором обеспечивается миграция минусов друг к другу и к наименьшему. Потому что в условиях задачи есть возможность менять знак только у двух соседних ячеек, а значит нужно как-то хранить координаты, находить ближайших, и в итоге квадратичная сложность покажется недостижимой мечтой. 4:07 Нет, не можете взять два любых, перечитайте условие задачи 0:33, и таким образом остается главная сложность - обеспечить эффективную миграцию ближайших и к наименьшему, так что все мудрствования на тему чета-нечета лишены смысла. Решение с модулями игнорирует условие задачи, решает другую задачу. Это как "зачем изобретать ракету, давайте просто представим, что корабль уже на орбите, вычислим его координаты".
@user-fe9pz9wo5b
@user-fe9pz9wo5b Ай бұрын
какие координаты? какая миграция? поэтому и есть подобные задачи на логику, чтобы отсеивать спагетти-кодеров, которые усложняют такие простые задачи) "Нет, не можете взять два любых" - в том-то и дело, что можем. Он же показывает как это сделать, не нарушая условий задачи...
@MathPTU
@MathPTU 3 ай бұрын
типичная задача с олимпиады по математике за 5 класс
@MathPTU
@MathPTU 3 ай бұрын
ответ был очевиден, если математику не прогуливал
@vitya.obolonsky
@vitya.obolonsky 3 ай бұрын
ой бля курсологи))))
@vasilyh4588
@vasilyh4588 2 ай бұрын
Как уже задолбало это "то как вы думаете".... Нормально мы думаем. Головой. 99% HR и вот таких вот проверяльщиков - не способны сделать выводы из этого маталгоритмического теста. Человек не умеющий их решать и не видящий за ними смысла - может быть лучшим специалистом, чем тот, кто умеет. У меня знакомый был - задачки решал на загляденье, а программер никакой вышел - пришлось уходить в Scrum masterа. А если человек знает ответ - тогда что тестируется? Он сразу проходит, как "умеющий решать" читер? P.S. По решению: Придумал, сразу после времени 3:10. Мы можем менять знаки у двух числе как угодно долго - ну так нафига вообще это делать? Мы же можем опустить эту операцию как "ничего не значащую" (нам не интересно как долго мы это будем делать, главное, что мы - можем это делать). Выравниваем все элементы в массив и сортируем по модулю от минимума к максимуму, высчитывая при этом количество минусов. 1. Если количество минусов чётное - мы просто суммируем все элементы по модулю. Потому что рано или поздно - мы придём к тому, что все будут положительными. 2. Если количество минусов НЕ чётное - мы суммируем все элементы и вычитаем из них первый самый маленький (то бишь прибавляем минус минимальный элемент по модулю), т.к. после всех смен - останется ровно 1 минус, от которого никак не избавиться. И получается - сама по себе матрица тут нафиг не нужна.
@user-fe9pz9wo5b
@user-fe9pz9wo5b Ай бұрын
при чем тут HR, это задача на техническом собесе, а техсобесы ведут не HR, а старшие it-специалисты (лиды/сеньоры). никто не говорил, что такие задачки говорят в полном объеме о специалисте, но они хотя бы могут показать, что у человека работает базовая логика. да и отсеивать как-то надо кандидатов любыми способами, слишком много людей хотят в фаанг. "Человек не умеющий их решать и не видящий за ними смысла - может быть лучшим специалистом" любой может писать код и создать любое приложение, но не каждый может сделать это правильно. Много задач, где нельзя просто писать спагетти кодом, нужно уметь мыслить шире. Посмотри код подобной задачки без включения логики и ужаснешься, такое писать просто нельзя. "задачки решал на загляденье, а программер никакой вышел" не каждый умеющий решать задачки сможет или захочет быть разработчиком, важен интерес к разработке. "А если человек знает ответ - тогда что тестируется?" это только одна из разных задач и один из этапов отбора, которые никак не гарантируют тебе место в фаанг. Отбор поэтому и многоэтапный, чтобы было общее представление о тебе. Да и доля везения тоже играет большую роль конечно же в любых аспектах жизни. Потом если узнают что разраб так себе, то выкинут (если за это время плохо развивался) конечно если ты крутой специалист и это докажешь, то этих вопросов может и не будет. а среди средних спецов есть конкуренция, поэтому их надо как-то отсеивать
@wolan4ik
@wolan4ik 3 ай бұрын
ПРОТЕСТУЮ! Задача выполнена не полностью 1:06-1:13 - матрица не преобразована в указанный вид посредством доступной операции смены знаков (это мы сделали в уме???). Мне преподаватель математики за то, что я в уме посчитал, минус 100500 баллов бы влепила @sashalukin + предлагаю решить мод данной задачи - условия те же - модифицировать матрицу(по желанию в уме или алгоритмически) но менять знаки необходимо буквально, т.е. брать знак одного числа и менять со знаком другого, т.е. в парах (1;2) и (-1;-2) знаки остаются, а (-1;2) => (1;-2) и наоборот
@user-fe9pz9wo5b
@user-fe9pz9wo5b Ай бұрын
задача выполнена полностью, не нужно ничего тут придумывать лишнего, как уже говорили - задача на логику
@spetz911
@spetz911 3 ай бұрын
Это просто дроч. Очевидно как ее решать, только зачем?
@TheFox-1666
@TheFox-1666 3 ай бұрын
А теперь дополнение к задаче прилетает - сделать визуализацию процесса 1 час, и тут весь код в мусорку, на которую тебе дали 8 часов, так что задача не решена, она просто оптимизирована, и ссаными тряпками на улицу...
@dpoleev
@dpoleev 3 ай бұрын
Если это Си, то достаточно читать двухмерный массив как одномерный в один цикл.
@djorayevofficial5060
@djorayevofficial5060 3 ай бұрын
Java*
@ivormacky5078
@ivormacky5078 3 ай бұрын
5 минут, бухой и накуренный, сегодняшняя задача дня на литкоде сложнее куда, как мне кажется!)
@b0ss1987
@b0ss1987 3 ай бұрын
Шляпа которая никогда не понадобится в реальной работе.
@artemkardi4534
@artemkardi4534 3 ай бұрын
шляпа которой определяют твое логическое мышление и мышление в нестандартных ситуациях, конечно если бы большие компании брали обычных роботяг которые могут писать то что пишут школьники на информатике, то рост у компании был бы куда меньше, еще алгоритмы поднимают твой спектр возможнойстей и гибкости в написании кода, как и находить решение за менее маленькое время выполнения.
@b0ss1987
@b0ss1987 3 ай бұрын
сразу видно что ты ничего не понимаешь в программировании. Алгоритмы нужно только при работе с большим объемом данных. Если ты фронтенд то тебе это вообще не нужно, конечно должны быть элементарные знания, но в целом для сраного js или андроид или iOS приложения задротские алгоритмы не нужны. А то что ты умеешь решать всратые логические задачки не означает что ты не будешь писать говнокод.
@hdfroggit3051
@hdfroggit3051 3 ай бұрын
​@@b0ss1987будешь писать говнокод, когда будешь например делать линейный поиск в массиве уникальных элементов. Таких примеров куча. Знание алгоритмов помогает писать эффективное решение сразу "на лету"
@ЮрийБ-о6е
@ЮрийБ-о6е 3 ай бұрын
@@b0ss1987 Я рассуждаю так, если логика развита очень хорошо, то можно практически не готовиться к алгоритмам. Мне кажется на это рассчитывали организаторы когда придумывали такие нудные собесы. Но большинство просто зубрит все эти паттерны алгоритмов, видя в каждой новой задаче задачу о рюкзаках или с двумя указателями не суть (но для этого тоже как никак надо уметь думать) и подстраиваясь под неё. Я согласен насчет того, что алгоритмы не важны если объем данных маленький но как инструмент проверки логики вполне жизнеспособны. Вот вы какого фронтенд дева себе хотите? Который знает на 2 фреймворка больше или который думать умеет? Отучить писать говнокод можно, а вот научить думать имхо очевидно сложнее) Хотел было ещё сказать про фронтов которые фреймворки пишут для анимаций оперируя матрицами и пр чепухой, но это о малое от всех фронтов)
@b0ss1987
@b0ss1987 Ай бұрын
@@user-fe9pz9wo5b вот почему тебе никогда не стать программистом... Весь тот бред который ты написал говорит что не программист.
@АндрейЛарионов-ж3э
@АндрейЛарионов-ж3э 3 ай бұрын
Я не знаю насколько низкий iq нужен чтобы придумывать решение больше 2 минут. Решение придумал секунд за 12+-. И так очевидно, что любую пару отрицательных чисел можно сделать парой положтельных. И сразу после этого очевидно, что нужно сделать отрицательным число минимальное по модулю. Также очевидно, что если в матрице есть 0, то можно сделать матрицу без отрицаельых чисел. Программу написал за 3 минуты.
@dpoleev
@dpoleev 3 ай бұрын
Уже усложняешь. достаточно смотреть сколько отрицательных чисел.
@ivanivan3765
@ivanivan3765 3 ай бұрын
А каким образом потом отнять минимальное, если мы заранее не знаем, какое оно?
@Meelf_Hunter
@Meelf_Hunter 3 ай бұрын
@@ivanivan3765 оч легко же. Проходим по массиву и считаем количетсво отрицательных, дополнительно ищем САМОЕ БЛИЗКОЕ К 0. И все =) Тебе нужны абсолютные значения)
@Meelf_Hunter
@Meelf_Hunter 3 ай бұрын
@@ivanivan3765 у тебя этим минимальным может быть изначально положительное число, просто оно приобретет знак минуса. P.S. не смотрел еще видос, сразу начал решать, буквально минут 5 хватило потратил, а тут человек уже комментарий такой написал
@ivanivan3765
@ivanivan3765 3 ай бұрын
@@Meelf_Hunter я немного другое имел ввиду. Человек выше написал, что достаточно смотреть, сколько отрицательных. Я же не вижу вариантов ограничиться только этой информацией. Поэтому и написал свой вопрос.
@Meelf_Hunter
@Meelf_Hunter Ай бұрын
@@user-fe9pz9wo5b нет, если четное количество отрицательных - считаешь всю сумму (abs). Если нечетное - ищешь минимальный (abs min), считаешь сумму всех чисел и вычитаешь минимальный (abs). Поэтому надо знать, сколько отрицательных. Размер матрицы не влияет никак
@xz8928
@xz8928 3 ай бұрын
min = Integer.MAX_VALUE *
@ksushakiseleva2644
@ksushakiseleva2644 2 ай бұрын
Прекрасный разбор! Спасибо!
Грабим Дома на Собеседовании в Google
11:30
Саша Лукин
Рет қаралды 40 М.
Hoodie gets wicked makeover! 😲
00:47
Justin Flom
Рет қаралды 131 МЛН
1, 2, 3, 4, 5, 6, 7, 8, 9 🙈⚽️
00:46
Celine Dept
Рет қаралды 108 МЛН
СКОЛЬКО ПАЛЬЦЕВ ТУТ?
00:16
Masomka
Рет қаралды 3,2 МЛН
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
00:41
Симбочка Пимпочка
Рет қаралды 3,9 МЛН
Как росла моя зарплата программиста
7:20
Саша Лукин
Рет қаралды 29 М.
DevRel в Google - Профессия Мечты?
5:53
Саша Лукин
Рет қаралды 42 М.
Первый Алгоритм Для Изучения в 2024
8:13
Саша Лукин
Рет қаралды 88 М.
Hoodie gets wicked makeover! 😲
00:47
Justin Flom
Рет қаралды 131 МЛН