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

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024
  • Курс по Поступлению в FAANG и другие компании в Европе: sashalukin.com...
    Телеграм: t.me/saschalukin
    Разбираем задачу из собеседования в Amazon на middle разработчика в Берлин. Главное в ней - это придумать решение, а сам код пишется буквально в несколько строчек.

Комментарии • 140

  • @zudwa9280
    @zudwa9280 23 дня назад +77

    Решил сразу после того, как Александр показал решение.

  • @RAZRAB-dev
    @RAZRAB-dev 23 дня назад +46

    Классическая ситуация когда придумываешь сложное решение а тут всё так просто

  • @vorobey66
    @vorobey66 23 дня назад +43

    кажется, это первая задача, которую я смог решить самостоятельно, причем очень быстро
    плюс мораль от таких видео, спасибо!

    • @keklola
      @keklola 23 дня назад +6

      На самом деле какая то очень простая задача, решилась буквально за минуту. Единственное над чем задумался(на пару секунд), могут ли они стать все положительными, но сразу в голову пришла мысль, какое число отрицательных чисел было изначально - четное или нечетное, и тут все сразу стало понятно. Не думаю, что эта задача является какой то решающей или что-то в этом роде, скорее наоборот самая первая и простая для отсевки совсем ленивых, либо же условие было посложнее, чем здесь показано.

  • @evgenijb186
    @evgenijb186 22 дня назад +7

    5:06 Поправка: решением будет не "сумма модулей всех элементов минус модуль самого маленького числа", а "сумма модулей всех элементов минус ДВА модуля самого маленького числа". Это "самое маленькое число" тоже присутствует в "сумме модулей всех элементов".

  • @artyomzolotoverkhov8468
    @artyomzolotoverkhov8468 22 дня назад +5

    Офигеть, я бы не догадался до решения. Спасибо, Саша

  • @iJaVolo
    @iJaVolo 23 дня назад +8

    1) Спасибо за контент! Тебя очень интересно смотреть)
    А у меня случилось то самое чувство, когда пришёл домой очень сильно пьяный с позавчера, и решил задачу с собеседования в it-гигант первым же способом, который пришёл в голову - посчитать количество отрицательных, если четное, то наверняка будет способ превратить всех соседей в четные. Если нечетное количество отрицательных, значит находим наименьшее в матрице, и оно будет единственным отрицательным. Таков быстрый ответ без проверки. Потом ещё пару минут на паузе проверял своё предположение, и в итоге оказался прав))
    И вот то самое чувство в том, что бухой я случайно с первой попытки мгновенно решил задачу на логику от его величества Amazon, а в реальной жизни я 2 года что-то там пишу на питоне и мне вообще не светит такая корпорация)))))

  • @ps-037
    @ps-037 23 дня назад +4

    Саша, ты светлая голова! Удачи тебе. Сыну показываю твои задачи. Не все догоняет, но схватывает некоторые идеи.

  • @YuriiLutsyk0304
    @YuriiLutsyk0304 23 дня назад +6

    Действительно, всё просто, но не просто! Очень интересно было)

  • @neruinfo166
    @neruinfo166 22 дня назад +2

    Единственная задача на твоем канале, которую я решил в уме быстрее, чем закончилось видео 😆

  • @yzhishko
    @yzhishko 23 дня назад +12

    Решение на 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 23 дня назад +1

      @@downloadtrump4816 0 для случая если матрица пуста, если нет, тогда matrix[0][0]

    • @user-co9rc1kp7p
      @user-co9rc1kp7p 23 дня назад +3

      Задача выполнена наиболее оптимальным путём. На синтаксис и глубинное знание языка никто смотреть не будет, собеседующий смотрит и оценивает как кандидат думает и всё. Можно конечно быть core разработчиком языка, вылизывать всё до идеала, но это в отличие от знания того как решать Вам ничем не поможет. Очень частый кейс, когда интервьюер вообще не знает ЯП который Вы используете

    • @St1ggy
      @St1ggy 22 дня назад

      @@downloadtrump4816почему это будет неверный ответ? Если матрица состоит только из положительных, то мы ничего и не отнимем

    • @yzhishko
      @yzhishko 22 дня назад

      @@user-co9rc1kp7p все зависит от того, на какую поизицию вы идете. Меня взяли на работу, именно из-за того, что я один из всех кандитатов подмечал такие мелочи помимо решения оптимальным путем.

    • @user-co9rc1kp7p
      @user-co9rc1kp7p 22 дня назад

      @@yzhishko в гугл? я говорил применимо к бигтехам, где просто ищут логически подкованных независимо от позиции. Собеседующие в таких компаниях как правило не к себе в команду набирают. А если Вас собесит тимлид у которого Вы будете работать, то тут решает всё, я бы даже сказал что эмпатия больше чем остальное

  • @mxygame7787
    @mxygame7787 23 дня назад +8

    Легендарная доска!

  • @panfilovandrey
    @panfilovandrey 23 дня назад +1

    Интересная задача, ты всегда очень хорошо объясняешь. Лайк.

  • @kaily_kain
    @kaily_kain 16 дней назад +1

    поняла условие задачи, когда увидела решение.
    до этого думала, что нужно написать алгоритм, который будет выполнять эти самые преобразования и приведет матрицу к искомому виду за минимальное количество итераций)
    уже почти алгоритм составила)

  • @ksushakiseleva2644
    @ksushakiseleva2644 Час назад

    Прекрасный разбор! Спасибо!

  • @ASUS234UA
    @ASUS234UA 23 дня назад +10

    Можете меня поздравить, я видимо гожусь на работу в Амазон.
    А вообще, что это за задача? - уровень начальной школы. И код здесь написать несложно, даже если ты полный чайник. Просто более скилловый программист сделает его куда эффективнее. Даже я со своим ультра-базовым Java, который проходил, когда думал учиться на программиста, смог бы решить задачу и написать код.

    • @alexanderspeshilov839
      @alexanderspeshilov839 18 дней назад

      Возможно, вы путаете "необходимо" и "достаточно". Даже если предположить, что вам попадётся та же задача, то алгосекции и задачки на сообразительность зачастую необходимы для прохождения, но не достаточны.

    • @ASUS234UA
      @ASUS234UA 18 дней назад

      @@alexanderspeshilov839 возможно вы забыли, с какой целью писали этот комментарий, потому что он ни о чем и противоречит законам русского языка.
      Достаточно - менее сильное определение от "необходимо". Так что нужно с нуля переписывать то, что вы написали. И дать немного уточнений, как проходит интервью. Потому что, как правило, это резюме, разговор + тех. задание. Вы как будто какой-то целый тест/экзамен описываете. Там формат конкурса проходит?

    • @sentimiental
      @sentimiental 3 дня назад

      ⁠@@ASUS234UAДружище, а ты все продолжаешь путать «достаточно» и «необходимо». Видимо собеседник решил не тратить время на объяснение, ибо понял твой уровень языка)
      Достаточно подразумевает ОТСУТСТВИЕ дополнительных условий.
      Необходимо лишь подразумевает, что это один из критериев.
      Исходя из твоего ПЕРВОГО комментария, ты видимо решил, что годишься в амазон, хотя ты лишь годишься на хороший фидбек от одного из 5 интервьюеров и то только по одной задаче (обычно их две).
      Вопросы по принципам лидерства, систем дизайн и еще 5 алгособесов ты видимо прошел автоматически вместе с простенькой логической задачей) Люди идут к бигтеху годами, а ты обесценил их старания тем, что справился с одной из тысяч задач, которые там даются)

    • @ASUS234UA
      @ASUS234UA 3 дня назад

      @@sentimiental Видимо кому-то нечем заняться и он пришел рыгать...
      Относительно второй части комментария: где я говорил, что "решил, что гожусь в Амазон"?
      Очевидный подтекст совсем не видим?
      Начиная с оригинального комментария, заканчивая последним, я и спрашиваю как это работает и что там происходит.
      Если у тебя настолько пусто в голове, что ты даже этого не понял, то к твоему *мнению* я точно прислушиваться не буду. Особенно учитывая цель твоего комментария.
      Отвечать не буду, можешь не стараться. Я уже понял с каким "интеллектуалом" имею дело.

  • @Fact-Frenzy.
    @Fact-Frenzy. 23 дня назад +2

    Решил задачу сам, пойду подам CV в amazon

  • @Arxpetro
    @Arxpetro 23 дня назад +2

    Вау!!! Гениальный подход!

  • @dlcgaming2642
    @dlcgaming2642 23 дня назад +2

    красава жду ещё подобных приколов а ещё если есть просто какой-то задачник или книга было бы круто

    • @drugged_monkey
      @drugged_monkey 22 дня назад

      задачник называется leetcode

  • @user-ei6rd7ei7x
    @user-ei6rd7ei7x 23 дня назад +1

    Берём самый верхний минус, если таких несколько, то самый левый из них. От него можно избавиться, если это не элемент в правом нижнем углу, причём так, что знаки элементов выше рассматриваемого и левее рассматриваемого в его строке останутся положительными. Тогда в зависимости от чётности числа отрицательных чисел в конце получим, что все числа положительны (тогда задача решена), либо в правом нижнем углу число с отрицательным знаком, тогда будем менять знаки по цепочке от него до самого маленького по модулю числа. Если в исходных данных есть 0, то его можно рассматривать как число любого знака, и тогда ответ - сумма модулей всех чисел.
    То есть:
    1) если есть 0, то ответ - сумма модулей элементов матрицы
    2) если нет 0, и количество отрицательных чисел чётное - сумма модулей элементов матрицы
    3) если нет 0, и количество отрицательных чисел нечётное - сумма модулей элементов матрицы минус 2 модуля наименьшего по модулю элемента

  • @perceptron9834
    @perceptron9834 20 дней назад +1

    Дошло только после простых примеров 😊

  • @user-hj6uy5zi7i
    @user-hj6uy5zi7i 22 дня назад +1

    Задачку решил и горд собой, но от меня почему-то ускользнуло, что нам важно лишь итоговое число, и поэтому я честно написал алгоритм преобразования матрицы🙈

  • @BellaLugoshi
    @BellaLugoshi 23 дня назад +4

    ну меня нет ни в амазонах ни в гуглах ни в лондонах, но когда вы прочитали задачу я сразу и не понял что же там за подвох такой кроется если очевидно, что при наличии четных отрицательных пар они просто исчезают сразу, а при наличии нечетных - отрицательным будет минимальное значение. То есть всё решается за один проход по матрице за O(n). Женя, 49 лет XD

    • @mischa_solt
      @mischa_solt 23 дня назад +1

      Молодец

    • @zudwa9280
      @zudwa9280 23 дня назад

      гений, просто гений!

  • @TheKrivetko
    @TheKrivetko 4 дня назад

    Полезно. Но я бы вместо счетчика отрицательных сделал бы просто булево isNegativeLeft = false и в цикле просто в условии негативного значения isNegativeLeft = !isNegativeLeft. Ну и как по мне дважды брать по модулю не имеет смысл. Можно просто значение min = INT_MIN и в том же условии по негативному значению брать максимум между min и текущим значением матрицы. Ну и в конце нужно два мин прибавить (в моем случае мин отрицательное всегда)

  • @vladislavBykov111
    @vladislavBykov111 23 дня назад +3

    Не учтен вариант с 0. Если есть 0, то мы можем сделать все числа неотрицательными

    • @user-co9rc1kp7p
      @user-co9rc1kp7p 23 дня назад +1

      пришёл в комменты и увидел что хотел написать сам

    • @MrOldschoolrocknroll
      @MrOldschoolrocknroll 23 дня назад +1

      В размышлениях не учтен, но по факту - этого и не требуется:
      - сумму все равно надо считать, а это означает, что на каждой итерации все равно нужно проверять num на 0 (завести флаг);
      - Math.min в конечном итоге уже проверяет на 0, если num == 0 - выдаст 0;
      - Все равно нужно вычислять четность отрицательных чисел, так как в матрице может не быть 0;
      - После цикла, к проверке четности придется добавить доп. проверку, так как 0 может не быть в матрице.
      Итого: Проще абстрагироваться от 0.

    • @user-co9rc1kp7p
      @user-co9rc1kp7p 23 дня назад +2

      @@MrOldschoolrocknroll Логично, спасибо. Можно конечно прикопаться и сэкономить парочку операций если добавить такую проверку if (min != 0) Т е если 0 попадается, то начиная со следующей операции инкремент и обновление минимума не производить. Но это уже явно лишнее, спасибо за то, что так расписали

  • @user-oq5xn9eg2o
    @user-oq5xn9eg2o 15 дней назад

    Жду каждое твоё видео!!

  • @TTTuTTT
    @TTTuTTT 23 дня назад +2

    Сразу пришло решение.

  • @arturio10
    @arturio10 13 дней назад

    кайф просто! спасибо за такие задачи! просто логически разбивая (также у себя на доске в комнате) на квадраты 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

  • @user-oj9pb3bv5w
    @user-oj9pb3bv5w 17 дней назад

    простоя задача на инварианты. вообще ничего сложного
    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))

  • @user-ms3fx9oj1n
    @user-ms3fx9oj1n 15 дней назад

    Я бы по своей логике изначально посчитал четное или не четное количество минусов. в случае если четное мы сможем от них избавиться. если не четное то 1 минус всеже останется. и нужно сделать так чтобы это был минимальный по значению элемент. и от этого уже построил 2 алгоритма

  • @user-gd1qf1ed4g
    @user-gd1qf1ed4g 21 день назад

    Классная задачка!
    Спасибо!

  • @natsurukasumi3370
    @natsurukasumi3370 21 день назад

    Цікава та корисна задача, дякую)

  • @khurshidddbek
    @khurshidddbek 23 дня назад +2

    Спасибо

  • @leomysky
    @leomysky 22 дня назад

    Отличное видео, спасибо за ролик

  • @DmitriyPolyudov
    @DmitriyPolyudov 23 дня назад +4

    Если в матрице есть одно из чисел 0, то не имеет значения четное кол-во отрицательных чисел или нечетное. Мы все числа можем сделать положительными. Этот момент не учтен в решении.

    • @user-mo8zi6uc4d
      @user-mo8zi6uc4d 23 дня назад +1

      значение min будет 0, так-что никак не повлияет на итоговый результат

  • @user-cx4nj6io8x
    @user-cx4nj6io8x 23 дня назад

    Придумал решение за минуту, но вот если бы я не знал что есть лёгкое решение, то возможно бы я запутался

  • @tusman4ik
    @tusman4ik 15 дней назад

    С лету догадался.. Спасибо олпроге, хоть где-то пригодится..

  • @aduditsky
    @aduditsky 23 дня назад +1

    Единственное узкое место это значение min. Понятно, что это для упрощения.

  • @nyb2153
    @nyb2153 19 дней назад +1

    на кого не посмотри, один в гугле, другой в амазоне итд
    откуда такие задачи простые на собесах в такие компании? это задача на уборщика туда?

  • @Legenda_2K17
    @Legenda_2K17 7 дней назад

    Те кто пишут что они смогли это решить легко это как? Я конечно абсолютно не разбираюсь в программировнии, но даже если просто искать решение без программировния я бы никак это не сделал. Единственная идея у меня была когда он сказал, что тут простое решение это просто вокруг кажого минусового числа найти самое маленькое плюсовое и поменять местами. Ну это icq150+ наверное надо для решения

  • @bumbam123
    @bumbam123 23 дня назад +1

    очень хорошая задача, кстати. Реально помогает отделить оголтелых кодеров от разумных и полезных сотрудников. Еще одна похожая "даны два больших неотсортированных массива чисел, различающихся одним числом. Найти это число." UPD: числа не по порядку, все абсолютно перемешаны, так что с позицией ничего не выйдет сделать

    • @incios
      @incios 23 дня назад

      хеши?

    • @AlexanderSmetannikov
      @AlexanderSmetannikov 23 дня назад +3

      xor?

    • @undermind4133
      @undermind4133 23 дня назад +3

      От суммы первого отнимаем сумму второго?

    • @dolotube
      @dolotube 23 дня назад

      Условие не четкое - массивы не отсортированы, но одинаково или нет?

    • @bumbam123
      @bumbam123 23 дня назад

      @@dolotube хорошее наблюдение, но на собесах обычно не бывает четких условий. Вежливое и вдумчивое выяснение деталей задачи (и пересказ ее своими словами) - важная часть решения

  • @user-wk9tu7rt2t
    @user-wk9tu7rt2t 22 дня назад

    Решил ещё на этапе превью. Посмотрел и убедился, что всё действительно просто. Код не оптимален, но пойдёт.

  • @St1ggy
    @St1ggy 22 дня назад

    Я бы negativeCount заменил на булеву, которую просто тогглил бы в ветке на проверку отрицательного числа, тогда не надо будет писать ещё одну проверку на четность

  • @Срун
    @Срун 7 дней назад

    Легкая же, я сразу посчитал количество чисел с минусом, их четное, просто свести минусы все вместе и сократить

  • @OleksandrKucherenko
    @OleksandrKucherenko 19 дней назад

    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 23 дня назад

    Прикольная задача!

  • @psevdonim257
    @psevdonim257 20 дней назад

    Кто решил эту задачу- молодец, но это Одна из многих и на многих собеседованиях , и на те собеседования надо еще попасть, короче это как пробежать быстро 100 метров и надеяться что эта же скорость будет у вас на марафоне😂

  • @gr1ver935
    @gr1ver935 23 дня назад

    Красотааа

  • @remonterkz-6062
    @remonterkz-6062 9 дней назад

    6:50 На каком именно шаге мы прибавили в сумму значение min?

  • @CarlJohnson-y5j
    @CarlJohnson-y5j 22 дня назад

    С одной стороны, круто. С другой, такие гении, решающие абстрактного коня в вакууме, весьма тугие в бизнес-задачах, наши HR не задают таких вопросов из-за их бесполезности.

  • @user-mu4lf6df2v
    @user-mu4lf6df2v 20 дней назад +1

    Как код работает если в матрице все элементы по модулю больше 1000_000_000?

    • @alexanderspeshilov839
      @alexanderspeshilov839 18 дней назад

      Если вы про выбор начального значения min, то с одной стороны - да, стоило взять что-то более обоснованное (максимальное значение типа int или первый элемент матрицы, например). Но в данном случае этот выбор не влияет на корректность кода. Для почти всех нетривиальных матриц, а точнее для матриц с общим количеством элементов больше 2, раньше сломается суммирование. А это только случаи матриц 2х1 и 1х2.
      Для матрицы 5х5 - а именно так было в исходной задаче - если минимальное по модулю число больше 85_899_346, то уже переполнение при суммировании будет.

  • @ktyom
    @ktyom 22 дня назад

    Думал будет проще , а тут задача перешла в умножение :/ так не интересно ~ я изначально думал про диагонали и перетаскивание диагоналей 😅✨ можно было бы выбрать самое большое число и просто сложить , так как диагональ проводить не обязательно только по центру. А тут эта ваша логическая логика 🌚

  • @nikitaparfenov6710
    @nikitaparfenov6710 23 дня назад

    Терпеть не могу алгоритмические задачи и лайв кодинг, но эта задача шикааарна

  • @Mcsollo
    @Mcsollo 21 день назад

    Я еще по превью в видео понял как это решить, меня возьмут в амазон?

  • @remonterkz-6062
    @remonterkz-6062 9 дней назад

    как именно проверить эту программу в действии?

  • @mariastarkova9317
    @mariastarkova9317 20 дней назад

    Вообще не понимаю как эти задачи решать. Смотрю только потому что парень нравится.

  • @ValihanJumadilov
    @ValihanJumadilov 23 дня назад +2

    Если в матрице все числа будут больше 1000000000?

    • @keng_aust
      @keng_aust 23 дня назад

      Там уже ограничения задачи нужно смотреть. В случае задачи это не особенно важно. Не знаю, на чём он пишет, но обычно у типов чисел есть лимит, и можно минимум приравнять к максимальному значению. В питоне такого нет, поэтому я всегда ставлю минимум и максимум как line[0] или mat[0][0], в зависимости от массива.

    • @Lammax2012
      @Lammax2012 23 дня назад +1

      За стартовый минимальный можно принять первый элемент матрицы

    • @user-co9rc1kp7p
      @user-co9rc1kp7p 23 дня назад

      @@keng_aust float("inf")

  • @nighthunter28
    @nighthunter28 14 дней назад

    те кто решал егэ по профильной математике под номер 19 решат эту задачу за несколько секунд

  • @MrThebestzorro
    @MrThebestzorro 22 дня назад

    Забавная задача. Тут реально 90% это логика.

  • @wolan4ik
    @wolan4ik 23 дня назад

    ПРОТЕСТУЮ! Задача выполнена не полностью 1:06-1:13 - матрица не преобразована в указанный вид посредством доступной операции смены знаков (это мы сделали в уме???). Мне преподаватель математики за то, что я в уме посчитал, минус 100500 баллов бы влепила
    @sashalukin
    + предлагаю решить мод данной задачи - условия те же - модифицировать матрицу(по желанию в уме или алгоритмически) но менять знаки необходимо буквально, т.е. брать знак одного числа и менять со знаком другого, т.е. в парах (1;2) и (-1;-2) знаки остаются, а (-1;2) => (1;-2) и наоборот

  • @user-eb6zr6dw4n
    @user-eb6zr6dw4n 23 дня назад

    А если при выборе строки или столбца будут умножаться на -1 все числа строки или столбца 😅? Как такое решить без брутфорса?

  • @AndriiPetrusha
    @AndriiPetrusha 23 дня назад

    Почему 16 для матрицы 3х3, там вроде 17 должно быть.
    Досмотрел не до конца (4:24)... но логика мне подсказывает такое решение.
    По сути не так уж важно, стоят отрицательные числа рядом или нет - их всегда можно "поставить" рядом путём умножения соседних на -1.
    Поэтому нужно просто тупо считать количество отрицательных чисел - если оно чётное, то просто суммируем всю матрицу, просто каждый элемент берём по модулю.
    Если число отрицательных чисел нечётное - то находим МАКСИМАЛЬНЫЙ отрицательный элемент (т.е. наиболее близкий к 0 нулю). Опять суммируем всю матрицу (модули элементов) и вычитаем этот МАКСИМАЛЬНЫЙ отрицательный элемент.
    Вроде всё....
    Посмотрю до конца :)

  • @AndriiPetrusha
    @AndriiPetrusha 23 дня назад

    А всё... дослушал до 4:53... не учёл, что можно ЛЮБОЙ элемент сделать отрицательным... т.е. для матриц с нечётным количеством отрицательных элементов ищем минимальное по модулю число и его делаем отрицательным

  • @snikitin32
    @snikitin32 23 дня назад

    В чем прикол, если одно у одного и того тоже числа можно сколь угодно много менять знак

  • @triviumfan9411
    @triviumfan9411 23 дня назад

    Оригинально

  • @lesnoy_leo
    @lesnoy_leo 23 дня назад

    Решил ее сразу после прослушивания условия:) Я гений?)

  • @canniballissimo
    @canniballissimo 23 дня назад

    ну да, по факту только находим итог, не преобразовывая ничего

  • @MathPTU
    @MathPTU 23 дня назад +4

    типичная задача с олимпиады по математике за 5 класс

    • @MathPTU
      @MathPTU 23 дня назад

      ответ был очевиден, если математику не прогуливал

  • @VoidObj
    @VoidObj 22 дня назад

    понял смсл задачи по перекидыванию минусов в любое место еще до того, как договорил ))
    Жаль нет профессии - решатель логических задач 😀😀😀
    п.с. насколько мне известно, решение лог. задач слабо коррелирует со скилом самого програмиста 🤗

  • @ooshkapooshkin8048
    @ooshkapooshkin8048 23 дня назад

    не очень понял решение, зачем в такой простой задачке вообще что то подводить друг к другу?
    решение для школьников от школьников: нужно гепотетически представить, что если у нас четное число отрицательных чисел, то мы просто все складываем по модулю (то есть все числа просто положительные сразу становятся, так как мы теоретически можем их все взаимно уничтожить т к 2 отрицательных = 2 положительных), и наоборот, если нечетное количество отрицательных чисел, то будет просто 1 отрицательное, а сделать отрицательное можно любое число, значит берем минимальное, решение:
    в 1 проход по всем элементам массива (цикл в цикле будет, так как многомерная матрица) мы получаем сразу ответ

  • @cl1ck846
    @cl1ck846 23 дня назад +1

    hello there!

  • @TheFox-1666
    @TheFox-1666 23 дня назад +1

    А теперь дополнение к задаче прилетает - сделать визуализацию процесса 1 час, и тут весь код в мусорку, на которую тебе дали 8 часов, так что задача не решена, она просто оптимизирована, и ссаными тряпками на улицу...

  • @user-tq9bu6ki2h
    @user-tq9bu6ki2h 7 дней назад

    Чёт прям подозрительно легко

  • @alexzk3
    @alexzk3 17 дней назад

    Сильно все сложно, std::accumulate(begin, end, 0u, [])(auto a, auto b){return abs(a) + abs(b);});

  • @usser-0bYdldQ
    @usser-0bYdldQ 23 дня назад

    фигня, кто решал пятнашки, тот может не дослушивать

  • @dpoleev
    @dpoleev 23 дня назад +1

    Если это Си, то достаточно читать двухмерный массив как одномерный в один цикл.

  • @iKBAHT
    @iKBAHT 23 дня назад

    Сразу решил

  • @vasilyh4588
    @vasilyh4588 19 дней назад

    Как уже задолбало это "то как вы думаете".... Нормально мы думаем. Головой.
    99% HR и вот таких вот проверяльщиков - не способны сделать выводы из этого маталгоритмического теста.
    Человек не умеющий их решать и не видящий за ними смысла - может быть лучшим специалистом, чем тот, кто умеет. У меня знакомый был - задачки решал на загляденье, а программер никакой вышел - пришлось уходить в Scrum masterа.
    А если человек знает ответ - тогда что тестируется? Он сразу проходит, как "умеющий решать" читер?
    P.S. По решению: Придумал, сразу после времени 3:10.
    Мы можем менять знаки у двух числе как угодно долго - ну так нафига вообще это делать? Мы же можем опустить эту операцию как "ничего не значащую" (нам не интересно как долго мы это будем делать, главное, что мы - можем это делать).
    Выравниваем все элементы в массив и сортируем по модулю от минимума к максимуму, высчитывая при этом количество минусов.
    1. Если количество минусов чётное - мы просто суммируем все элементы по модулю. Потому что рано или поздно - мы придём к тому, что все будут положительными.
    2. Если количество минусов НЕ чётное - мы суммируем все элементы и вычитаем из них первый самый маленький (то бишь прибавляем минус минимальный элемент по модулю), т.к. после всех смен - останется ровно 1 минус, от которого никак не избавиться.
    И получается - сама по себе матрица тут нафиг не нужна.

  • @Lammax2012
    @Lammax2012 23 дня назад +1

    Про вычитание двойного минимального не понял. Зачем? Нужно же просто вычесть минимальный один раз от общей суммы. Да минимальный в сумме есть, его и вычитаем.

    • @Aurant-
      @Aurant- 23 дня назад +1

      1+3=4 , -1+3=2 , 4 - 2*1 = 2

    • @varchar21
      @varchar21 22 дня назад

      Тоже не понял зачем. В цикле в sum кладем все подряд по модулю. Таким образом в sum каждый элемент массива попадет один раз и все. Затем проверится количество отрицательных. И если их кол-во нечетное, то отнимется минималка по модулю, которую в цикле посчитали один раз. Это первое.
      Второе. В примере с маленькими матрицами (которая 3 на 3) на доске, где с элементом со значением -1 сделать ничего нельзя, очевидно же, что максимальная сумма не 16, а 17. Видимо, Саша уже и там вычел дважды минимальное число

    • @Aurant-
      @Aurant- 22 дня назад

      @@varchar21 истина не всегда очевидна, возьмите и найдите в ручную сумму всех элементов в той матрице 3х3 и убедитесь, что она равна 16.

    • @varchar21
      @varchar21 22 дня назад

      @@Aurant- мы говорим об абсолютном значении элементов? Если да, то сумма вообще 18, нет - то с учетом этой отрицательной единицы 17. Либо сочту за честь, если просветите

    • @Aurant-
      @Aurant- 22 дня назад

      @@varchar21 мы говорим о том, что если вы нашли сумму абсолютных значений, то чтобы найти максимальную сумму, где есть один отрицательный элемент, вам нужно дважды вычесть его из абсолютной суммы

  • @АндрейСеменов-н3э
    @АндрейСеменов-н3э 22 дня назад

    😵

  • @vitya.obolonsky
    @vitya.obolonsky 23 дня назад

    ой бля курсологи))))

  • @dolotube
    @dolotube 23 дня назад +1

    1. Считаем количество отрицательных чисел.
    1.1. Если оно четное, то просто всем отрицательным числам меняем знак.
    1.2. Иначе всем отрицательным числам меняем знак, после чего находим наименьшее из чисел и делаем его отрицательным.
    1.3. Считаем сумму всех чисел.
    2. Теперь думаем, как это решение формализовать в виде алгоритма, в котором обеспечивается миграция минусов друг к другу и к наименьшему. Потому что в условиях задачи есть возможность менять знак только у двух соседних ячеек, а значит нужно как-то хранить координаты, находить ближайших, и в итоге квадратичная сложность покажется недостижимой мечтой.
    4:07 Нет, не можете взять два любых, перечитайте условие задачи 0:33, и таким образом остается главная сложность - обеспечить эффективную миграцию ближайших и к наименьшему, так что все мудрствования на тему чета-нечета лишены смысла. Решение с модулями игнорирует условие задачи, решает другую задачу. Это как "зачем изобретать ракету, давайте просто представим, что корабль уже на орбите, вычислим его координаты".

  • @spetz911
    @spetz911 23 дня назад

    Это просто дроч. Очевидно как ее решать, только зачем?

  • @b0ss1987
    @b0ss1987 23 дня назад +4

    Шляпа которая никогда не понадобится в реальной работе.

    • @artemkardi4534
      @artemkardi4534 23 дня назад +1

      шляпа которой определяют твое логическое мышление и мышление в нестандартных ситуациях, конечно если бы большие компании брали обычных роботяг которые могут писать то что пишут школьники на информатике, то рост у компании был бы куда меньше, еще алгоритмы поднимают твой спектр возможнойстей и гибкости в написании кода, как и находить решение за менее маленькое время выполнения.

    • @b0ss1987
      @b0ss1987 23 дня назад +3

      сразу видно что ты ничего не понимаешь в программировании. Алгоритмы нужно только при работе с большим объемом данных. Если ты фронтенд то тебе это вообще не нужно, конечно должны быть элементарные знания, но в целом для сраного js или андроид или iOS приложения задротские алгоритмы не нужны. А то что ты умеешь решать всратые логические задачки не означает что ты не будешь писать говнокод.

    • @hdfroggit3051
      @hdfroggit3051 23 дня назад

      ​@@b0ss1987будешь писать говнокод, когда будешь например делать линейный поиск в массиве уникальных элементов. Таких примеров куча. Знание алгоритмов помогает писать эффективное решение сразу "на лету"

    • @user-co9rc1kp7p
      @user-co9rc1kp7p 22 дня назад

      @@b0ss1987 Я рассуждаю так, если логика развита очень хорошо, то можно практически не готовиться к алгоритмам. Мне кажется на это рассчитывали организаторы когда придумывали такие нудные собесы. Но большинство просто зубрит все эти паттерны алгоритмов, видя в каждой новой задаче задачу о рюкзаках или с двумя указателями не суть (но для этого тоже как никак надо уметь думать) и подстраиваясь под неё. Я согласен насчет того, что алгоритмы не важны если объем данных маленький но как инструмент проверки логики вполне жизнеспособны. Вот вы какого фронтенд дева себе хотите? Который знает на 2 фреймворка больше или который думать умеет? Отучить писать говнокод можно, а вот научить думать имхо очевидно сложнее) Хотел было ещё сказать про фронтов которые фреймворки пишут для анимаций оперируя матрицами и пр чепухой, но это о малое от всех фронтов)

  • @ivormacky5078
    @ivormacky5078 23 дня назад

    5 минут, бухой и накуренный, сегодняшняя задача дня на литкоде сложнее куда, как мне кажется!)

  • @dpoleev
    @dpoleev 23 дня назад +2

    Уже усложняешь. достаточно смотреть сколько отрицательных чисел.

    • @ivanivan3765
      @ivanivan3765 23 дня назад +1

      А каким образом потом отнять минимальное, если мы заранее не знаем, какое оно?

    • @Meelf_Hunter
      @Meelf_Hunter 23 дня назад

      @@ivanivan3765 оч легко же. Проходим по массиву и считаем количетсво отрицательных, дополнительно ищем САМОЕ БЛИЗКОЕ К 0. И все =) Тебе нужны абсолютные значения)

    • @Meelf_Hunter
      @Meelf_Hunter 23 дня назад

      @@ivanivan3765 у тебя этим минимальным может быть изначально положительное число, просто оно приобретет знак минуса.
      P.S. не смотрел еще видос, сразу начал решать, буквально минут 5 хватило потратил, а тут человек уже комментарий такой написал

    • @ivanivan3765
      @ivanivan3765 23 дня назад

      @@Meelf_Hunter я немного другое имел ввиду. Человек выше написал, что достаточно смотреть, сколько отрицательных. Я же не вижу вариантов ограничиться только этой информацией. Поэтому и написал свой вопрос.

  • @АндрейЛарионов-ж3э

    Я не знаю насколько низкий iq нужен чтобы придумывать решение больше 2 минут. Решение придумал секунд за 12+-.
    И так очевидно, что любую пару отрицательных чисел можно сделать парой положтельных.
    И сразу после этого очевидно, что нужно сделать отрицательным число минимальное по модулю. Также очевидно, что если в матрице есть 0, то можно сделать матрицу без отрицаельых чисел.
    Программу написал за 3 минуты.

  • @xz8928
    @xz8928 23 дня назад +2

    min = Integer.MAX_VALUE *

  • @-X-Ray-
    @-X-Ray- 15 дней назад

    Классная задача, спасибо за рассказ