больше так не решил эту задачу, хотя вроде бы наглядно и просто всё.
Как у людей логика работает? хз ваще как то набикрень
Почему же, мне кажется, многие так могут.
Ну вроде вполне прямолинейное решение, да и код не лучшим образом оформлен - класс там не нужен ни на фиг.
Наличие класс хочет сам leetcode скорее всего
Это в литкоде так оформляется
В том то и дело, что все наглядно, просто и логично, а в решениях у других всякая дребедень при этом почему то
А какая аудитория у leetcode? Исключительно люди с 10+ лет написания промышленного кода? По мне, то что вы говорите, как раз нормальная ситуация
Ну я и сам в этом году программироать только начал.
Вот. Как вы сами написали решение? Просто и понятно?
а как решали другие? сильно менее оптимально? в этом решении я бы из последних двух циклов (по r и по rk) вынес проверку на i в отдельный внешний иф, незачем одно и то же проверять много раз.
Ну посмотри решение других, как по мне да. в два отдельных внещних ифа внутри которых эти циклы?
похоже на проявление классического синдрома NIH (Not Invented Here). у нас всё просто и логично, у других всякая дребедень. как-то ведь они проходят тесты, значит, и в их решениях могут какие-то зайчатки логики присутствовать?
Да это явно лучше, спасибо
ну да, как-то так. можно бы и ретурн поставить.
Ты про то, что вначале, матрица пустая?
https://leetcode.com/problems/spiral-matrix/solutions/20719/c-spiral-traverse/ ну вот самое популярное решение на С++ ну разве мое решение не горзадо проще и быстрее?
Лучше - понятие относительное. А насчет быстрее - надо мерять :)
Блин, теперь мне решение еще больше нравится, спасибо большое, возьму на вооружение, нуб есть нуб)
в вашем решении надо думать, чтобы понять, что оно где-то в чём-то проще а тут тупо в лоб лом-лопата-иван набили простата простате рознь
так оно ровно такое же 🤣 разве что order[p++] вместо пушбэка и переменные называются осмысленно u, d, l, r вместо i, sizeRows, sizeColumns. ну и ифы ещё отдельно вытащены.
Ровно такое же?
а тебя не удивляет, что разные исполнители по одним и тем же нотам играют казалось бы одно произведение, но одни в топах и на их концерты билеты не достать, другие выступают в деревнях в пустых залах. а здесь тем более голова работает у всех по разному. чему ты удивляешься? или ты просто решил таким образом прихвастнуть? :)
а тебя не удивляет, что разные исполнители по одним и тем же нотам играют казалось бы одно произведение, но одни в топах и на их концерты билеты не достать, другие выступают в деревнях в пустых залах. а здесь тем более голова работает у всех по разному. чему ты удивляешься? или ты просто решил таким образом прихвастнуть? :)
ну я описал отличия.
1. reserve + push_back на интах медленнее resize + operator[]. 2. Это литкод, тут самое главное, в первую очередь, решить хоть бы как, и только во вторую уже что-то оптимизировать. 3. Данная задача слишком простая, чтобы можно было говорить о простом/сложном коде. Да и простота разная бывает, как уже подметили выше. 4. Хороший нейминг — это круто, но это не панацея. 5. Сам себя не похвалишь — никто не похвалит :)
тут переменых только 7 штук обьявляется в функции , m, n u = 0, d = m - 1, l = 0, r = n - 1, p = 0; 7, и со всеми ними работает, складывая и отнимая, у меня же только 2, еще 1 i в ощем цикле, и еще по одному внутри каждого цикла. т.е. максимум 4. А как всем известно оптимальное количесто в функции переменных равно 4, тогда все они хранятся в регистрах процессора, остальные же записываются в стек, ну а скорость работы со стеком в 500раз медленее работы с регистом. Следовательно можно сделать выводы о разнице скорости работы этих программ
Я только про этот частный случай говорю, в моём сообщении нет "только"
1. неа, не медленней. для больших размеров как раз быстрее, избавляемся от фазы обнуления. для 10*10 вообще насрать. 2. нейминг осмысленней как раз во втором решении.
ну допустим если у элемента дефолт конструктор люто бешено что-то долго делает, reserve+push_back будет предпочтительнее
Это не та программа где нужна какая-то скорость
изначальная инициализация (нулями) точно так же ходит по индексу. апдейт сайза очень дешёвый, в отличие от второго прохода по памяти.
i - индекс осмысленый нейминг для цикла фор, как и j для вложенного, называть 1 буквой переменные, хз, что тут может быть осмысленного
и на фоне этих рассуждений о регистрах, матрица передаётся вектором векторов
Ну я как бы разнице говорю, как по мне, она существенна между этими кодами
тип всех данных переменых инт
с m и n в цикле никто не работает, это начальная инициализация. вместо p у вас неявное spiralOrder.size. единственная экономия i вместо u и l, но и она сомнительна, ибо ситуативна.
i у вас вовсе не просто индекс 🤣 он ограничивает слева и сверху остаток матрицы.
Внимательнее посмотри, работают. вычитают внутри цикла,
вычитают m или n? в упор не вижу. вычитают 1 из d и r, как и вы.
Но это же индекс вектора, с которым мы работаем внутри цикла, проходясь по вектору этим индексом
я же и не спорю, что это индекс. но не просто индекс, а ещё и осмысленная переменная, к тому же применяемая в двух разных смыслах: как ограничение слева и сверху (первый индекс и второй).
Да, точно, моя ошибка. Тогда 5 остается. Да, короче вы правы тогда, не особо получается велика разница тогда))
Обсуждают сегодня