0: Мы сообщество криминал айти, последние несколько лет мы помогаем людям с трудоустройством в лучшие it компании. Получение оффера это обычный навык, и мы помогаем довести его до идеала. Стань частью нашей истории.
1: Вступай в сообщество в telegram. Получить оффер это проще, чем ты думаешь.
2: Скажешь про себя буквально минутку. Вот я тоже, давай, давайте, раз я скажу, значит, я работаю в яндексе, в алисе, вот делаю там часть, которая понимает язык, типа из текста.
3: Какой-то смысл достаёт, вот пишу на плюсах на питоне примерно 4 года в яндексе. Вот давай, наверное, тоже немножко расскажи про себя. Ну я сейчас заканчиваю 2 курс, учусь в политехе Московском.
4: Вообще был склонен к какой-то разработке, но не мог вообще найти себя. Поэтому я изучал разные технологии, разные языки там, не знаю, си плюс, плюс питон пхп джиэс остановился в итоге на го.
5: Он сейчас мой основной язык. Угу. В принципе, вот это изучение, оно оказалось плюсом, потому что я смотрю на своё окружение, у меня какие-то более, наверное, обширные знания.
6: И примерно год назад меня мой одногруппник подсадил на алгоритмы, то есть я очень частенько решал cutest от яндекса разные катоны начал ходить этапы олимпиадные задачки решать бесом начал ходить.
7: Тоже понравилось, так сказать, смотрел, в правильном ли направлении я развиваюсь. Угу. В целом, если вкратце примерно так. Окей, прикольно. Ладно. Да, давай тогда.
8: Перейдём к задачкам сейчас.
9: Так вот, ссылка на комнату, да, и раз ты ходишь по её, решаешь всякие задачки, могу я тут какие-то простые. Есть задачки в начале. Так что если ты их знаешь, ты скажи, наверное, да, я сейчас волнуюсь, так что
10: Я сейчас займусь, поэтому у меня скил немного упадёт.
11: Давай, значит, я сейчас расскажу условия задачки, мы обсудим её решение там, типа, ну как ты примерно там, ты придумаешь решение, расскажешь, как ты планируешь её решать. Мы обсудим там по времени, по памяти, она будет работать. Вот. И если все ок, то тогда начнём писать код, а ты будешь код писать на
12: На каком языке, кстати, на год или, ну, вообще, тут школа же на плюсах, поэтому давай плюс на плюсах вообще идеально. Да, я просто на годом давно писал, поэтому мне было бы, мне будет не так просто, но я логоритмические на плюсах пишу. Ну, круто.
13: Так, короче, вот задачка найти максимально максимальный по длине, строго монотонный под отрезок массива. Вот давай, наверное, скопирую на, как это редактор
14: Условия строго, монотонно это
15: То есть, есть массив чисел и там есть, ну, он как бы состоит, там числа идут, то вверх, то вниз, то возрастают, то бывают. Ну, они могут все на месте стоять. Вот. И хочется найти максимальный по длине, строго монотонный под отрезок массива.
16: 1, что пришло в голову, так как у нас он либо может возрастать, либо убывать, то я буду решать. Во первых, через некий слайд виндоу, наверное. То есть я буду через атен идти по массиву смотреть.
17: Сравнивать 2 ближайших числа и, соответственно, запоминать максимальную длину по убыванию и по возрастанию. То есть я буду запоминать и возрастание, и убывание. Могу по другому объяснить, если немного плохо сформулировал мысль.
18: Ну, попробуй, да, потому что так не очень онятно. Понял, что будешь идти по массиву и следить за возрастающими убывающими последовательностями. Но как ты из этого получишь максимальную длину? Максимальную вот именно последовательность, пока не понял.
19: У нас же элементы должны друг за другом быть.
20: Ну, под отрезами, ну, соответственно, я буду хранить максимальную по длине, по возрастанию максимальную по длине, по убыванию. Я смотрю, если у меня текущая подпоследовательность, например, возрастает, я уже смотрю, больше ли
21: Она по длиннее, чем предыдущая максимальная длина. Если у меня она идёт уже не по возрастанию, а по убыванию, я буду смотреть, больше ли она, соответственно, чем предыдущая, по максимуму.
22: Ну, окей, это 1, что в голову пришло, не знаю, если есть какое-то хорошее, ну, подсказочка. Если я плохо, например, придумал алгоритм, то я готов послушать. Не звучит хорошо, на самом деле, просто, да, звучит хорошо.
23: По времени, по памяти сколько вот по памяти просто число хранится? 2 часа. Ну да, че то такое. Ладно, вроде, да, тут не очень сложно. Давай пром код написать. Вот тут какая-то функция.
24: Так, окей. Так, сейчас момент.
25: Так, если я резко перестану говорить или рот просто без этого, без звука идёт, то значит у меня наушники отошли, я чатик выведу и как бы напишешь сейчас. Хорошо. Ну, для начала я объявлю.
26: Макс по возрастанию и максимально по убыванию с английским плохо. Ап даун.
27: Далее начну итерацию.
28: Числа у меня какие по, ну, длина массива у меня в целом.
29: Ну, пусть сойдёт. В смысле, не может быть длина больше, чем поместится в вот это, да. А, ну да, давай сойдёт. Угу. Просто из опыта яндекс очень любит большие числа, там до 18.
30: 18, а меньше?
31: Сразу скажу, можно тут оптимизировать, можно сразу вывести длину, потому что она будет у нас считаться. Каждую итерацию тоже проверяться будет условия. Но я пока оставлю. Так, ну и соответствен.
32: Лучше сохраню ещё предыдущий элемент.
33: Ну и понятное дело, мне нужно проверить. Лучше все-таки сохраню её.
34: А я пару сохраняю.
35: А у меня начало и конец.
36: Вот так, да. Ну, если массив пустой, то как будто формулировка не имеет особого смысла, да, так что тут? Ну, ну, тем не менее, окей, я ж обращаюсь как бы, к индексу вот здесь я здесь уже
37: Я очень надеюсь, что 1, что в голову мне влезло, оно будет правильно. Смогу сейчас реализовать.
38: Ну, соответственно, чтоб мне хранить длину, мне нужно ещё хранить стартовую, стартовый индекс под отрезком старт оперу.
39: Допустим, так и start down тоже пусть будет.
40: Сравниваем текущий элемент.
41: С предыдущими.
42: Строго убывающий либо строго возрастающий. Значит, мне тут равенство не подходит.
43: Вот здесь перешли уже к самому интересному. Получается, если у меня следующий элемент текущий меньше, чем предыдущий, соответственно, у меня идёт убывание и я к
44: Соответственно, получаю длину.
45: I минус старт.
46: В том случае, если у меня, у нас сейчас идёт по убыванию под отрезок, значит мы уже не можем возрастать. То есть у нас предыдущий отрезок по возрастанию улетает, соответственно, я как бы
47: Обновлю индекс оо старт ап.
48: Ну, то есть у нас, я сейчас продублирую практически тоже самое, и тогда у меня разница будет как бы нулю, и тогда максимум у меня, очевидно, не будет меняться. Ну, скорее всего.
49: Стартап и старт.
50: Вот. Ну и, соответственно, мы смотрим следующее. Макс ан равно.
51: Ошибаюсь.
52: Ну, в целом, скорее всего, все.
53: Ну, здесь Ники ретерн нужно. Ну, мы хотим. Да, да, да, да, да. Индексы. А нам индексы нужны. Есть моментик. Ну, тут не сложно, как бы тогда.
54: Здесь, да, немножко тогда нужно вых, все-таки засунуть.
55: Если больше, тогда мы запоминаем. Соответственно, следующую длину. Понятно, можно уже длину не запоминать, потому что так как нам нужны индексы, я просто разницу буду считать. Ну ладно, раз уж я все сделал.
56: Вывожу ответ. Соответственно, если максимальная длина по возрастанию больше, чем максимальная длина по убыванию
57: Так, если равны ещё здесь, че, условия у нас же равны, они не должны быть, но здесь так.
58: Ну, про это я рассказывал отделение, надеюсь, видно, что я же считаю разницу индексов. Соответственно, у меня должна обновляться разница равна нулю.
59: Угу. Так, если у меня максимальная по возрастанию, то я, соответственно, начальный конечный индекс, как бы начальный индекс + 2.
60: Че то я по клавишам не pop сегодня.
61: Макс.
62: Ну, наверное, все. Такой некий спидран произошёл. А, ну, точка запятой по привычке не ставил уже так, вроде та.
63: В целом просто линейно прохожусь.
64: Ну понятно. Так ты уже сдаёшь или ещё проверяешь? Я бы проверил все-таки, а как там в коране это запускается? Не, она никак не запускается, мы глазами смотрим. Так.
65: Ну, соответственно, я смотрю максимальную длину. Максимальная длина по возрастанию убыванию индексы начальные.
66: Сохраняю здесь лишнюю операцию. То, что я сайт сразу считаю, учитываю длину 0, чтобы не было обращения к индексу, начиная с единицы здесь
67: Раз уж я читал, можно это использовать.
68: Если идём вниз, то.
69: Следующая длина.
70: Ну, в целом, наверное, сдаю, скорее всего.
71: Интересно услышать фидбэк уже.
72: Так, что делать? Давай так. Я спрошу тебя такую штуку. У тебя есть переменная лен? Она тут нужна вообще?
73: Ну, там, да, вот ты её используешь. Похоже, что нет, да? А, нет, ну просто.
74: Так, ну тут в 1 месте, короче, опечатка есть, она, которая, которая, тем не менее, производит валидный код, да, связан
75: Красиво.
76: Ну да, да, то попробуешь найти. Давай, да.
77: Да вот, кажется, тут в остальном как будто выглядит рабочим кодом.
78: Я каких-то проблем не вижу.
79: Приятно слышать. Так здорово, здорово.
80: Так, окей, давай че-нибудь ещё решим.
81: Так, ну вот есть задача.
82: Давай решим подотрезок с суммой икс. Короче, есть массив целых чисел. Надо найти непустой подотрезок с заданной суммой икс. Либо сказать, что нет такого.
83: Сейчас скинут условия.
84: Так.
85: Вот сейчас, наверное, тебя перебросило в редакторе на новую вкладку, да?
86: Ну, опять же, есть идейка. Могу сразу озвучить. Угу. Значит, по сложности тот же aten прохожусь. И, ну, условно, у меня тут задача на префиксную сумму. Угу.
87: То есть?
88: Сначала я Иду по массиву и пытаюсь набрать число больше либо равное таргету в том случае, если я в итоге прошёлся до конца, это такой абстрактный
89: Частный случай прошёлся уже до конца массива, так эту сумму и не набрал. Некий у меня, допустим, будет флаг, я помечаю, флаг у меня там не отмечен, все, я сумму уже не могу набрать физически, значит, как бы.
90: Ответ - 1 или какой там будет в случае неудачи. Угу.
91: Уже нормальный случай. Я, получается, могу где-то там найти некую подпоследовательность и, допустим, их будет несколько. То есть в момент, когда я нахожу уже индекс, под которым у меня префиксная сумма.
92: Становится больше, либо равна.
93: Таргету. Соответственно, если равна, то все. У меня break риторн идёт в случае, если больше, то я уже отнимаю
94: 0 индекс, то есть моей префиксной суммы 1 элемент, ну, некий слайд виндоу и Иду дальше, так как у меня как бы, не может быть пробелов в моём под отрезке, потому что, ну, подотрезок просто.
95: Я вычитаю из конца, ой, ну да, из начала элементы добавляю в конец следующий, как бы. Угу. В случае, если у меня добавилось прям много, например, я смотрю разницу, я убавляю, там я вижу несколько циклов.
96: Внутри, то есть такая замудрённое решение. Угу. То есть, добавляю, пока не получу больше, либо равно. А потом, если получил, убавляю слева, пока не получу что-то.
97: Понятно. Ща, по моему, не работает, потому что тут бывают отрицательные числа.
98: Типа проблема. Проблема в том, что ты можешь зря сдвинуть левый конец. Вот все, нужно только придумать примерчик.
99: Может такой, такой. Давай мы тут поищем сумму, как будто целиком, типа тут будем искать.
100: 7.
101: Да не так.
102: Вот, кажется, что твой алгоритм не найдёт. Ну да, потому что я буду, да.
103: Немножко подумать бы, как бы явно тут хочется что-то через ten решить, и хочется какие-нибудь слайд виндоу. Ну, чем быстрее, тем лучше, да, как бы, ну, если решение есть какое-то там.
104: Пока, который долго работает, тоже говорим, можем от него оттолкнуться. В общем, да.
105: Наверное, самое быстрое это он, который физически может быть.
106: Так, под отрезок я не могу здесь не сортировать, скорее, чтобы находить числа.
107: Ну, как будто, когда ты их посортируешь, ты потеряешь информацию о, ну, я просто мысли вслух, потому что, насколько я знаю, молчать, ну, нежелательно.
108: Прям моментально в голову не лезет, если честно. Прям что сразу работает у меня в голове.
109: Можно посчитать просто префиксные суммы для каждого индекса. Угу. И потом, через find, ну, уже на следующий, ну, я про какой-то неоптимизированный, скорее алгоритм, и потом.
110: Уже через find, потом, проходясь по каким какому-то индексу, смотрю, есть ли у меня в отрезке от нуля до текущего индекса. Префиксная сумма, равная как раз-таки разнице между текущей префиксной суммой и таргетом.
111: Понятно, да. Окей. А сколько такое будет работать?
112: Максимально, наверное, квадрат.
113: Почему, как ты считаешь, ну, 1 раз?
114: А нет, не квадрат.
115: Я лучше вслух порассуждаю. Значит, 1 раз я прохожусь, префиксную сумму считаю потом на каждую итерацию. Я при поиске буду все равно проходиться с нуля, как бы условно, и искать подходящий.
116: По сути то некий практически квадрат. А как понять квадрат или не квадрат, в смысле? Ну непонятно.
117: Откуда берётся квадрат? Ну?
118: Симпатическая сложность. Соответственно, когда по каждому, для каждого отдельного элемента я прохожу ещё, ну типа, окей, для 1 ты, видимо, ничего не делаешь. Для 2 ты смотришь на 1.
119: Для 3 смотришь на 1, на 2. Да, да, окей. И там получается, типа, сумма 1 + 2, + 3. Вот. Ну, то, что когда ищешь у тебя, а сколько поиск занимает в префекс суммах? Ну, видимо, ты просто проходишь и сравниваешь, да, поиск это максимум.
120: Если брать последний элемент.
121: Окей. Ну да, хорошо. Энквадрат видно, правда. Ну, интересно было ускорить, да. Ну, это интересно, правда, да.
122: Можно мапу делать, мапу сохранять значение префиксные суммы, но тогда это вообще неэффективно по памяти будет при большом количестве, при большой длине.
123: Ну неэффективно это насколько неэффективно?
124: Если у меня прям миллиарды хранятся, то, ну, а сколько синтетически? Ну, ты посчитал префиксные суммы? Я так понимаю, мы заняли уже память, он. Угу. Вот сколько мапа хранится, сколько, сколько точнее требует.
125: Тоже столько же твоя. Ну да, и там тоже симатика такая же. Поэтому как будто посчитав приличные суммы мы уже заняли. А вот
126: А, то есть мне сейчас найти решение в Ровно желательно. Угу. То есть, мне сейчас желательно решение в Ровно найти, как-то оптимизировать. Ну, просто мапа, она так как, ну, у меня, как бы, хэш таблица, у меня поиск ускоряется, да?
127: Ну, это кайф, да, по времени, значит, мы можем ускориться, потому что по памяти синтетически будет тоже самое. И там, и там линия, ну да, ну, по времени ускорить. Да, да. Вот интересно, по времени ускориться. Гоним дальше, значит, я понял.
128: Я не очень понял, что гоним дальше по скорости. Значит, сейчас подумать надо. Так, а чего мапа ускоряет? Не ускоряет. Мапа ускоряет, да, поиск. Вот единица. Хорошо. А сколько с этим ускорением получается? Ну?
129: Дух получается.
130: Ну да, ну как бы от 2, от, это тоже самое. Ну да, да, вот, окей. Ну смотри, линия, да, это, то есть у нас получилось сколько по времени?
131: Ну, по времени он, соответственно, по памяти 2.
132: Ну, тут, да, окей. Ну тут тоже вот он, да, смотри, это ок, это решение уже хорошее. Можно его писать, можно подумать, за типа, если ограничить себя по памяти, типа, от единицы, то есть не использовать дополнительной памят.
133: Особенно за сколько можно решить. Вот можно ли, допустим, за н. Квадрат решить, если у тебя есть только Константная память.
134: Хороший вопрос.
135: Ну, как бы, да, просто начальный индекс, конечный индекс. Угу. В 2 циклах перебираем, так как от единицы памяти сохраняю сумму, которая разница. Ну да. Ну, это, ну, медленно очень. Да, да, да, согласен.
136: Вот. Ну, короче, обычно все-таки, да, в памяти память есть всегда, а вот по времени хочется ускорять, поэтому решение где по линии за память.
137: И память, время за линию. Короче, оно лучше. Вот давай попробуем его написать. Вот. Угу. А также вставляешь, или мне уже писать сейчас. Давай так.
138: Сейчас, я на секунду, да.
139: Да.
140: Если у меня, допустим, длина 0, то есть не могу найти, что мне выводить.
141: Просто edit 1 какой-то. Ща нам нужно, я могу 0 0 просто вывести. Или -1 - 1:00. Это, да. Лучше давай - 1 минус, - 1 записать.
142: Это я здесь обработал случай, когда сама себя такое нежелательно.
143: Нормально.
144: Я сейчас об 1 интересном моменте подумал, так как у нас отрицательные числа могут храниться в отрезке. Угу. У меня может быть несколько одинаковых префиксов.
145: Отправлю и может быть, тот случай, когда я вот здесь вот проверяю сам на себя ссылаюсь или нет.
146: Я могу вычеркнуть из вот этого неравенства другой случай той же префиксной суммы, поэтому мне нужно, наверное, хранить некий вектор из префиксных сумм индексов префиксных сумм.
147: Чтобы избежать вот этого наложения самого на себя, скорее всего.
148: Да, но тогда у тебя, может быть, очень, очень длинные эти вектора. Ну, это очень, очень частый случай, если я, например, в 1 ключ складываюсь все, да, но когда ты
149: Оцениваешь свой алгоритм. Нужно как бы интересует сложность. В худшем случае в среднем.
150: А мне оценить, да? Ну типа, если ты хочешь реально хранить списки индексов, то давай оценим, да?
151: Ну, если прям ужасно, ужасно, что у меня там опять-таки мапа, и в ней только 1 ключ, и все значения туда кидаются, например, у меня там - 1, 1, - 1, 1. Ну, тогда.
152: Памяти н. Квадрат. И, скорее всего, по времени тоже будет н. Квадрат, потому что если я беру ключ от единицы, потом я прохожусь. Ну что я, по крайней мере, вижу в потом я прохожусь по вектору.
153: Данных префиксных сумм и ещё индекс не равный текущему.
154: Да, понятно. Ну, короче, наверное, да, зря это вслух сказал, что не очень рабочий моментик. Ну, как бы я согласен. Ну, так.
155: Так, ну тогда надо фиксануть, скорее всего.
156: Либо могу продолжить писать. Давай вернёмся к обсуждению алгоритма. Давай подумаем, как это делать. Вот мы поняли, что-то есть я так понял, что ты хотел посчитать вектор префикс сумм посчитать.
157: Какую-то мабу посчитать вот какую мапу, я не понял. Видимо, видимо, проблема была в мапе, в мапе ты, видимо, хотел хранить в мапе, я изначально хранил ключ. Это префиксная сумма и значение это index, под которым лежит эта префиксная сумма.
158: Вот, но изначально я не подумал о том, что, может, несколько одинаковых префиксов. Угу. Вот. Момент написания уже понял.
159: Соответственно, вот я озвучил, что это уже не, да, полезно.
160: Ну, надо подумать на то, да.
161: Можно немного динамически решить и во время того, когда я считаю
162: Ладно, это, наверное, не очень. Все-таки озвучу. Там надо костыли какие-то накидать во время того, как я считаю префиксные суммы смотреть префиксные суммы предыдущие Ким, но до конца ещё не додумал.
163: Потому что есть же ещё и после текущего индекса тоже.
164: Ну да.
165: Ну, пока в голову ничего не идёт, экономия времени, скажем, не идёт. Ну, давай ты ещё там пару минут подумаешь, если что, потом дальше продолжим, ещё обсудим. Мне кажется, просто состояние придумать сам как-то будет обидно.
166: Сказать это правда, это обидно.
167: Ну, на случай вот этот, который я сказал, думать о том, что будет после необязательно, потому что до этого, после мы рано или поздно во время итерации дойдём. То есть мы как бы идём по массиву и смотрим, есть ли у нас до этого
168: Такие же префиксные суммы. Угу. Понятно. Если она уже есть, то это не текущая, потому что мы её не записали ещё, и тогда этот случай можно не обрабатывать. Чёт.
169: Сумм. Я вижу, что ничего не понятно, я могу, ну, я примерно понял, но можно сформулировать тогда целиком алгоритм. То есть я пока понял, что мы считаем её суммы в самом начале. Типа, это окей, допустим, они у нас уже есть. Вот.
170: Как мы действуем? Нет, не совсем. Окей. А как мы действуем во время подсчёта префиксных сумм? Ладно? То есть я считаю текущую префиксную сумму. Ну, некая динамика. Смотрю, если
171: Меня в мапе по ключу префиксные суммы. Ну, таргет минус, текущая префиксная сумма. Угу. Если нет, скипаю, Иду дальше. Ну и записываю, очевидно, текущую префиксную сумму в мапу ключ и
172: Это префиксная сумма и значение, это индекс. Соответственно, в какой-то момент, когда я натыкаюсь на как раз-таки элемент на индекс с префиксной суммой, равной как раз
173: Нужный к тому предыдущему, к той, той предыдущей префиксной суммы сумме, я, соответственно, её нахожу в мапе.
174: А самой себя, её там внутри нету, поэтому это наложение. Ну да, да. Ну я бы даже сказал, что если бы были какие-то будущие для подходящие, они бы нам тоже не подходили, не понятно, там не максимальное ничего просто.
175: Ладно, да, окей, норм, давай писать продолжим. Так, значит, сумму считаю, вот здесь, соответственно, я лучше её запомню.
176: Int ппс равно вот это вырежу.
177: И, соответственно, смотрю наличие в мапе.
178: Тает минус ппс равно нулю, но если мы нашли
179: Здесь у меня, значит.
180: В случае, когда у меня текущее число подходит, это как бы считается за ответ. Да, у меня длина единица.
181: Окей, окей, тогда я по.
182: С нуля пошёл, чтобы не переписывать лишний раз здесь 0. И префиксную сумму я храню отдельно с так назову.
183: Все и, соответственно, если
184: Угу.
185: Префиксная сумма равна таргет то
186: Turn там надо дописать.
187: И, соответственно, если мы не равны таргету, сейчас я проверяю, есть ли в мапе, если оно имеется, то тоже нет. И потом у меня в мапу по ключу.
188: Псс равно индекс.
189: Ну и здесь ответ вывести.
190: Получается как-то так. Там начало, конец.
191: Переменная пс используется как int и как вектор интов сложно читать код да, my bad, my bad.
192: Так, читабельно, но вроде, должно быть, я бы сделал так пойдёт. Ну, какой как-нибудь. Угу. Если текущая префиксная сумма, некая временная префиксная сумма является таргетом таргет.
193: Минус временная префиксная сумма.
194: Да, я понял. У меня тут дублируется вот этот момент. Ладно, пока опустим.
195: Так, это записали и здесь начальный, так как мы предыдущий индекс уже записали, то, значит
196: И 2, это текущий элемент.
197: Если время есть, я могу убрать вот этот темп и ps. И просто использовать.
198: А, ну, ну, как бы, да, там, если можно, давай уберём, да, логический момент небольшой произошёл. Я буду благодарен за более простой код. Да, отлично.
199: 1, 2, 3, 4.
200: Здесь, здесь ещё 2.
201: Вроде бы вроде все, я текущую префиксную сумму, это предыдущая плюс новое полученное число. Смотрю, является ли оно подходит под таргет, если подходит под таргет сразу в ответ.
202: А если не подходит, то я смотрю в мапе, если у меня есть условно разница.
203: То я пишу в ответ и под конец, если мы не нашли разницу текущий текущий, префиксную сумму вспоминаю с индексом. Вот так.
204: Ну окей.
205: Это как ответ узнаешь, да, узнаешь. Да? Хорошо. Как бы ты такой код тестировал.
206: Вручную, то есть, ну, вручную. Ну, типа, не знаю.
207: Вопрос, во первых, интересный. В 1 очередь в голове бы просмотрел код, представил различные ситуации, которые у меня могут, так сказать, произойти в голове. Ну, во первых, длина 0 здесь.
208: Можно это все убрать? А, нет, нельзя, потому что там по массиву прохожу. А, ну мне код уже нельзя трогать. Да, точно. Тот можно код можно трогать, но, но уже не надо, я уже придумал.
209: Ладно, ну.
210: Затрудняюсь в ответе, как тестировать, ну, на каких входных данных, может, тестировал, как бы, типа, ну, там, не знаю, юниттесты, ручное тестирование сейчас не так важно. А, ну, ходые данные. Ну, все отрицательное, все положительное, какой-то микс.
211: Повторение, когда одинаковая префиксная сумма и по длине там 0 элементов, 1, 2.
212: Хотя, 1, 2 без разницы. Там, если уже все суммы работают. Угу. Короче, по моему, тут есть баги. Вот.
213: Я весь во внимание, если честно. Ну давай ты попробуешь и ещё разок. Если не получится, я не знаю. Попробую тест предъявить. Окей, окей, давай.
214: Багов в плане ответа тут как бы, да, есть, есть. Вот я могу придумать, кажется, входные данные, на которые, типа, на которых программа выведет неправильный ответ.
215: Я не вижу так поверхностно.
216: Расскажу.
217: Сейчас, может, минутку тоже посмотрю ещё раз. Код. Окей, окей.
218: По моему, они работают на таком тесте. Я не знаю, может у меня глюки, я че то, у меня голова болит тяжело, но мне кажется, что, типа в 1, 2 ищем 3. Вот так нормально таргет. 1, 2. Ищем 3, как будто.
219: Должно получаться. Ну, типа, должно получаться так, сорян. Но я не уверен, что так получается. Я могу озвучить, почему вроде как должно получиться. Давай, соответственно, я Иду.
220: По 1 индекс. То есть вот у меня единичка, я её записываю, префиксная сумма у меня равна единице равно таргету нет, не равно таргету следующий. И у меня в мапе что-то есть, у меня в мапе ничего нету.
221: Следующая префиксная сумма, то есть псинт предыдущий, то есть 1 плюс numbers, намберс ай это соответственно двойка 1 + 2 равно 3 псинт текущий 3 raven таргету да, равен таргет.
222: То. Ага, все, я понял. Моментик.
223: Ага.
224: Ну понятно, тогда вот так надо сделать.
225: А, вот, да, кстати, все, тогда он проходит.
226: Я почему-то в голове, когда ходил по префиксной сумме, считал я смотрел на 1 элемент, поэтому я написал l l a ne i. Вот да, да, я тоже думал, что brain случилось, да.
227: Да, прикольно, что я понял, что этот случай не работает, но я подумал, что уже в другом месте, но действительно уже какое-то месте клёво. Да. Окей, это клёво. Да. Респект, короче, короче, звучит, да, выглядит нормально.
228: Сейчас посмотрю ещё 1 тест.
229: Ну, короче, мне кажется, что она не работает ещё на таком тесте.
230: Также вслух озвучу по операции префиксная сумма 1 ne равно таргету, значит нету в мапе следующая операция префиксная сумма 3 это мы на двойке сидим. Пре.
231: Сумма 3. Не равно. Таргету не равно 5. И в мапе тоже нету. У меня в мапе только единица лежит. Следующая итерация. Префиксная сумма 6. Угу. Не равно.
232: Таргет таргет минус.
233: Шестёрка - 1, да, и соответственно он не находит. Соответственно, ответ не найден.
234: То есть, да, я не учёл моменты, когда у меня больше либо меньше нет, сейчас она такая.
235: Да, да, по модулю проти. Ну ладно, окей, окей, да, опять я нашёл другую баг и там ещё 1 бага есть. Ладно, короче, давай это правим.
236: Править, править, править. Ну да. Ну окей, понятно, что не работает, да, у тебя сейчас, ну да, то, что когда больше, когда меньше.
237: Я тут лишнюю проверочку тогда делаю. Вот так. Я лучше дифференс сделаю. Вот так. Есть разница, если у меня
238: Префиксная сумма больше, чем target.
239: Соответственно, я ищу единицу, которую мне надо брать.
240: Угу.
241: Я бы просто модуль брал, наверное.
242: Надо подумать, насколько модуль здесь хорошо, потому что у меня вся отрицательная может быть.
243: Вообще, как бы, да, там просто местами поменять. Если вот, например, у меня нужно найти 5, у меня префиксная сумма 4, где-то есть - 1. Если как бы смотреть на разницу, может получиться как бы - 1, я найду поэтом.
244: Наверное, вот снт.
245: Угу.
246: Все, прилак случился я.
247: Запутался почки. Угу.
248: А, ну да, если у меня есть префиксная сумма - 1, то, ну да, там, наверное, просто местами.
249: Так, там я дублирую, я сделаю.
250: Угу. Да, вот так стало лучше, но, к сожалению, ответ.
251: Получится неправильным. Попробуй ещё раз прогнать этот свой код на вот этом тесте. Вот это да.
252: Соответственно, 6, 6 - 5 1 1 я нахожу и вывожу уже.
253: 0.
254: Да, и это вроде как неправильный ответ.
255: Ну так как я префиксную сумму вычитаю, мне его не стоит учитывать.
256: Нет, ну все ещё неправильный, неправильный ответ, потому что у тебя так будет не туда, не туда. Да, да, да. То есть я её так префиксную сумму вычитаю. Да, у меня этот индекс как летает.
257: Ну вот это похоже, да.
258: Приятно слышать. Ну круто, короче, да, можно было чуть чуть проще сделать. Добавляй единичку где-нибудь, где-нибудь вот тут. И тогда ты мог бы инициализировать свою мапу, чтобы там
259: По нулю хранился бы 0. Угу. Тогда можно было бы обойтись без, типа, без этой проверки. Такая, такая история. Угу. Ща я, я курсор показываю, да. Вот. Короче, вот без этой проверки можно было обойтись. Угу. Если там единичку добавлять здесь.
260: А мапу инициализировать, короче, ещё причём, чтоб по нулю хранить 0, но типа так тоже работает, что все круто.