Мысли о LeetCode
Уже 2 месяца я решаю задачи на LeetCode. Начал с набора задач LeetCode 75. На данный момент решено 66% проблем из набора. Пару недель назад начал дополнительно решать задачи из SQL 50. Решаю примерно по 1 задаче в день из каждого набора, кроме выходных.
В LeetCode мне нравится большое коммьюнити с большим количеством задач, решениями и пояснениями. Отличный сайт для самообучения. Но не обходится и без ложки дёгтя – бенчмарки сделаны плохо. Результат выполнения одного и того же кода может варьироваться в неком диапазоне. И это нормально, т.к. на результат влияет много шума. Но сейчас имеем ситуацию, когда алгоритм сперва показывает результат на 50% – 60% лучше остальных решений, а чуть позже становится лучше 99% других решений или наоборот. Если провести достаточное количество замеров, то можно высчитать среднее или медиану. Разработчики сервиса этого не делают из-за экономии времени. Если бы замеры кода осуществлялись правильно, т.е. множество раз, то проверка занимала бы минуты, а не несколько секунд, как сейчас.
Зачем я это делаю? Во-первых, из спортивного интереса. Писать алгоритмы, которые решают задачу быстрее других – это весело. Во-вторых, где-то пол года назад у меня появился интерес к теме написания производительного кода, бенчмарков и всего, что с этим связано. Из-за этого я прочитал книгу Pro .NET Memory Management, а сейчас читаю Pro .NET Benchmarking, изучаю алгоритмы, структуры данных и практикуюсь в решении проблем. Все эти знания, я надеюсь, пригодятся в карьере.
Post #58
190
- 🔥 6