LINUX.ORG.RU
Форум — Talks  

Что-то я творю дичь в leetcode

 , бес противоречия


0

2

Subj. Вроде только начал, простые задачи, но меня несёт куда-то... Например, вместо индексации на два списка приделываю стек и вообще, получается как в анекдоте про Нильса Бора, который для измерения высоты башни с помощью барометра предложил воспользоваться секундомером, сбросив с неё этот барометр.

У вас также? Или тупо нарабатываете шаблоны как зубрёжка?

★★★★★

Вторник же, даже не пятница.

Что сказать-то хотел? Ну типа несёт… бывает…

Из решений:

Выпил? Протрезвей.

Трезв? Выпей.

Упал? Вставай.

Встал? Упай.

Упай? Чокопай

Дабу-ди? дабу-дай

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)

У меня этот leetcode персональный – взял K&R и решаю задачки, стараясь использовать только то, о чём шла речь в прочитанной главе. Но там более-менее интересное начинается где-то с упражнения 1.12 :) А для закрепления выдумываю задачки сам и пишу, уже опираясь на все полученные знания. И вот тут самое сложное – именно задачки выдумывать :)

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

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)

Недавно решал LC-3116 [1]. Сижу, думаю, не могу понять с чего начать. Запомнил одно правило: «не знаешь как решить задачу — начни с брут-форса». Ну сажусь писать брут-форс. Только вот алгоритм получается длинный, витиеватый, с кучей условий. Бросил это дело.

Подобная история — скорее исключение в моём пути к 156/346/51 (easy/med/hard). Склонен считать, что задачи нужно выбирать чуть выше своего уровня, но не сильно. Тогда получится закрепить слабый навык, иначе — долго поковыряться в носу.

> Или тупо нарабатываете шаблоны как зубрёжка?

Раньше делал для удовольствия. В последнее время — для подготовки к лайвкодинг-интервью.

У меня, как у гошника, есть ещё одна категория, которая не покрывается литкодом: написание корректного конкурентного кода. Здесь головоломки и (неадекватная) строгость оценивания не хуже.

Вообще, это непростительный идиотизм. ИИ справляется с шаблонными задачами на 100% корректно. А мы увольняем ответственных работников и ищем тех, чьи навыки давно автоматизированы.

[1]: https://leetcode.com/problems/kth-smallest-amount-with-single-denomination-co...

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)
Ответ на: комментарий от firkax

Ну вот там простая задача с перестановкой гласных. Я вместо «в лоб» беру по букве с начала и конца и иду к центру. Если одна из двух букв согласная, я сую пару в стек и иду дальше, как появляется гласная, достаю буквы из стека и меняю местами.

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

Shadow ★★★★★
() автор топика
Ответ на: комментарий от Shadow

Ну вот там простая задача с перестановкой гласных. Я вместо «в лоб» беру по букве с начала и конца и иду к центру. Если одна из двух букв согласная, я сую пару в стек и иду дальше, как появляется гласная, достаю буквы из стека и меняю местами.

Главное, чтобы в конце не получился шлакоблокунь.

(а то ведь он в том числе похожим образом получается…)

CrX ★★★★★
()
Ответ на: комментарий от Shadow

[LC-345]? Идея в целом здравая, только стек не нужен. Достаточно обеспечить инвариант s[i] = текущая гласная слева && s[j] = текущая гласная справа. В таком виде даже рекурсию легко написать.

Что задача может проверить:

. Метод выбора решения: почему не стал писать «в лоб», откуда взялся стек?

. Умение оценивать сложность времени и памяти.

. Умение прорабатывать тесты: как алгоритм поведёт себя на пустой строке, в строке без гласных, только с одной гласной, и т.д.

. Умение уточнять требования: нужно ли учитывать регистр и Unicode, in-place vs copy.

Самое главное: не писать код молча, а проговаривать каждое решение и допущение.

К сожалению, на интервью проверяется не только это, а театральность и стендап-шоу. Всё это ожидается сделать безупречно, за отведённый срок и под давлением. Каждый недостаток на счету. В итоге то, что в работе могло бы быть комментарием в PR, на интервью становится отказом.

[LC-345]: https://leetcode.com/problems/reverse-vowels-of-a-string/

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 9)

Там ничего не надо думать или решать самому. Просто заучиваешь решения типичных задач и все. Интервьюерам ваще пох что ты там нарешаешь, если не будет как у них, ты не пройдешь. Говорю как решивший 500+ на литкоде и 200 на ещё где-то и благополучно заваливший все интервью во все фаанги.

ant1 ★
()
Ответ на: комментарий от Shadow

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

Можно с двумя стенами с с двух сторон: первый проход положил гласные в стеки, потом их выровнял, чтобы одинаковое количество гласных лежало, второй проход - поменял. Только там не стек, а очередь наверное будет.

… А можно и одним стеком обойтись: первый проход положил гласные, второй - заменил.

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

По теме: кмк они и должны побуждать к решению задачек с разных сторон. Для широты взгляда так сказать.

bbc69
()
Ответ на: комментарий от bbc69

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

yars068 ★★★★★
()
Ответ на: комментарий от yars068

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

Так все делают. Или почти все. Обычный итеративный подход.

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

Цикломатическая сложность. Есть такая тема. Если не знаком, изучаешь, там всё подробно и обстоятельно объяснят.

bbc69
()
Последнее исправление: bbc69 (всего исправлений: 1)
Ответ на: комментарий от bbc69

Цикломатическая сложность. Есть такая тема.

там «NP-полную задачу» переосмысливают, вроде как вся классификация идет по одному месту, все куда проще, так что скоро переучиваться придется :)

Morin ★★★★★
()

За все время алгоритм в сыром виде понадобился только один раз и был установлен импортом в питоне искаропки.

Lordwind ★★★★★
()
Ответ на: комментарий от kaldeon

Самое главное: не писать код молча, а проговаривать каждое решение и допущение.

:-) визировать и отлаживать тоже вслух

«в вашем офисе точно можно материться ?»

MKuznetsov ★★★★★
()
Последнее исправление: MKuznetsov (всего исправлений: 1)
Ответ на: комментарий от Lordwind

Ну как. Сначала теория, это понятно. Но потом задачки для закрепления.

bbc69
()
Ответ на: комментарий от ant1

Это что сайт с универсальными вопросами собеседований? Компании даже свои оригинальные вопросы не удосуживаются придумать?

firkax ★★★★★
()
Ответ на: комментарий от Lordwind

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

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от seiken

Также предлагаю книгу Д. Пойа «Математика и правдоподобные рассуждения». Много интересных задачек в конце каждой главы.

knovich ★★
()
Ответ на: комментарий от seiken

работа из категории «тяни-толкай»

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

- Что должен знать студент?
- Всё!
- А что должен знать лаборант?
- Почти то же, что и студент.
- А аспирант?
- В какой книге находится то, что должен знать студент.
- А доцент?
- Где находится эта книга.
- А профессор?
- Где находится доцент.
Lordwind ★★★★★
()
Последнее исправление: Lordwind (всего исправлений: 1)

Ты решил перед нами похвастаться как оригинально ты решаешь задачки и какой ты умный?

tcpfinhello
()
Ответ на: комментарий от bbc69

мне кажется, он алгоритмическую сложность имел в виду, а не цикломатическую.

MirandaUser2 ★★
()

только начал

Как говорилось в анекдоте, наконец-то я нашел время и место.

thesis ★★★★★
()

Например, вместо индексации на два списка приделываю стек

Я подглядывал в теги к задаче, по них видно, на какую тему (напр. два указателя) задача. Потом, естественно, ты уже начинаешь это автоматом распознавать.

urxvt ★★★★★
()
Ответ на: комментарий от firkax

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

Aceler ★★★★★
()
Вы не можете добавлять комментарии в эту тему: только для зарегистрированных, score>=50.