Спасибо за разбор задач, очень прокачивают. Угарнул с того, что на литкод добавили тест k = 0, nums =[1]. При моей реализации ответ выходит один, думаю, как разобрать этот случай
Очень лëгкая задача. Концепт решения верный, а прога не работает. Нет проверки на выход за границы доски, предыдущий слой не нужен, нужно шаги до всех ячеек хранить и лучше это делать в матрице. Ячейка может оказаться недостижимой и при такой реализации прога зациклится.
аааа зачем уровни массив постоянного размера очередь размером в поле и ячейка ввиде структуры (visited, from, steps) и просто перебираешь каждую ячейку из очереди при переборе добавляются новые как только достал из очереди новую ячейку то проделываешь с ней все действия проверяя в начале на visited и в конце проверяешь, если это target, тогда пишешь ответ, но продолжаешь досчитывать, чтобы в последствии можно было использовать данный массив для нахождения количества шагов до любой ячейки от того же самого положения коня за O(1), просто ткнув в этот массив пальцем, а там уже будет ответ в поле steps у ячейки а если случится такое что у тебя в очереди закончились ячейки то говоришь что пути нет в итоге работает даже для не ровного поля и с островами а очередь размером в поле потому что возможно построить поле где в стеке будет лежать больше половины ячеек
Я очень редко пишу комментарий,но Боже,какое же это крутое видео!Я много читал про хэширование и про хэш-таблицы,но ничего не помогло мне понять это ,как это видео,я буквально прозрел!Спасибо ,бро,долгих лет тебе жизни
Полезно. Но я бы вместо счетчика отрицательных сделал бы просто булево isNegativeLeft = false и в цикле просто в условии негативного значения isNegativeLeft = !isNegativeLeft. Ну и как по мне дважды брать по модулю не имеет смысл. Можно просто значение min = INT_MIN и в том же условии по негативному значению брать максимум между min и текущим значением матрицы. Ну и в конце нужно два мин прибавить (в моем случае мин отрицательное всегда)
Алгоритм называется Rabbit and Turtle. Думаю, для тех кто прорешает 500 задач на лит коде рано или поздно на нее наткнется, таким образом просто проверяется количество решенных задач. И таких алгоритмов много, например есть список чисел, которые встречаются по 2 раза и одно число только 1 раз, без дополнительной памяти. Пытался решить эту задачу 1 неделю и специально не смотрел решение. После 1 недели понял что не могу решить и посмотрел. В результате этой задачи, усвоил урок, что нужно учить максимально большое количество алгоритмов, и отрабатывать их на лит код, а не пытаться изобрести велосипед 500 раз))))
Здравствуйте, подскажите, пожалуйста в 1 задаче… как метод maxPathSum понимает, что нужно складывать числа старших детей, а не младших? Ведь мы логику никакую не пишем после проверки на null. Туплю немного) Заранее благодарю ! int maxLeftPath = maxPathSum(root.left) как код считает старших детей в левой части? 🙏
Те кто пишут что они смогли это решить легко это как? Я конечно абсолютно не разбираюсь в программировнии, но даже если просто искать решение без программировния я бы никак это не сделал. Единственная идея у меня была когда он сказал, что тут простое решение это просто вокруг кажого минусового числа найти самое маленькое плюсовое и поменять местами. Ну это icq150+ наверное надо для решения
кайф просто! спасибо за такие задачи! просто логически разбивая (также у себя на доске в комнате) на квадраты 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
Я бы по своей логике изначально посчитал четное или не четное количество минусов. в случае если четное мы сможем от них избавиться. если не четное то 1 минус всеже останется. и нужно сделать так чтобы это был минимальный по значению элемент. и от этого уже построил 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))
Как уже задолбало это "то как вы думаете".... Нормально мы думаем. Головой. 99% HR и вот таких вот проверяльщиков - не способны сделать выводы из этого маталгоритмического теста. Человек не умеющий их решать и не видящий за ними смысла - может быть лучшим специалистом, чем тот, кто умеет. У меня знакомый был - задачки решал на загляденье, а программер никакой вышел - пришлось уходить в Scrum masterа. А если человек знает ответ - тогда что тестируется? Он сразу проходит, как "умеющий решать" читер? P.S. По решению: Придумал, сразу после времени 3:10. Мы можем менять знаки у двух числе как угодно долго - ну так нафига вообще это делать? Мы же можем опустить эту операцию как "ничего не значащую" (нам не интересно как долго мы это будем делать, главное, что мы - можем это делать). Выравниваем все элементы в массив и сортируем по модулю от минимума к максимуму, высчитывая при этом количество минусов. 1. Если количество минусов чётное - мы просто суммируем все элементы по модулю. Потому что рано или поздно - мы придём к тому, что все будут положительными. 2. Если количество минусов НЕ чётное - мы суммируем все элементы и вычитаем из них первый самый маленький (то бишь прибавляем минус минимальный элемент по модулю), т.к. после всех смен - останется ровно 1 минус, от которого никак не избавиться. И получается - сама по себе матрица тут нафиг не нужна.
Если вы про выбор начального значения min, то с одной стороны - да, стоило взять что-то более обоснованное (максимальное значение типа int или первый элемент матрицы, например). Но в данном случае этот выбор не влияет на корректность кода. Для почти всех нетривиальных матриц, а точнее для матриц с общим количеством элементов больше 2, раньше сломается суммирование. А это только случаи матриц 2х1 и 1х2. Для матрицы 5х5 - а именно так было в исходной задаче - если минимальное по модулю число больше 85_899_346, то уже переполнение при суммировании будет.
Видимо мы думаем по-разному. Двигаемся с 0,0 по главной диагонали пока значение ячейки не станет больше искомого (17) Далее просто проверяем все значения строки, столбца (17).
Кто решил эту задачу- молодец, но это Одна из многих и на многих собеседованиях , и на те собеседования надо еще попасть, короче это как пробежать быстро 100 метров и надеяться что эта же скорость будет у вас на марафоне😂
Я не знаю насколько низкий iq нужен чтобы придумывать решение больше 2 минут. Решение придумал секунд за 12+-. И так очевидно, что любую пару отрицательных чисел можно сделать парой положтельных. И сразу после этого очевидно, что нужно сделать отрицательным число минимальное по модулю. Также очевидно, что если в матрице есть 0, то можно сделать матрицу без отрицаельых чисел. Программу написал за 3 минуты.
С одной стороны, круто. С другой, такие гении, решающие абстрактного коня в вакууме, весьма тугие в бизнес-задачах, наши HR не задают таких вопросов из-за их бесполезности.