И снова здравствуйте. Это Ежедневная практика LeetCode. Итог сегодняшнего дня: 2 задачи за 30 минут, 1 SQL, 1 Python. Идеально сбалансированный, как и все должно быть.
Немного математики
Статистика:
- Идея решения заключалась в том, чтобы проверить, сколько призраков имеет каждое число в списке, а затем вычислить результат на основе этого.
- Поскольку каждая пара таких видений имеет значение, нам нужно использовать математическую формулу для количества неупорядоченных пар, которая равна n * (n-1) / 2. . Это гарантированно делится на 2, но мы используем оператор // для получения целочисленного результата
- Я также подумал о том, чтобы сначала отсортировать массив, затем просмотреть его и агрегировать количество для каждого числа, но я понял, что использование словаря будет более эффективным, чем сортировка (O( n) по сравнению с O(nlogn))
Достойный противник SQL
Статистика:
- Эта задача SQL была самой сложной из тех, что я решал в этой серии, но она помогла мне привыкнуть к рабочему процессу: сначала вы пишете небольшой запрос, тестируете его. , затем добавьте дополнительный код, протестируйте еще раз и так далее...
- Функция nvl() очень полезна, когда вы ожидаете получить в своем запросе некоторые нулевые значения, будь то из-за левого соединения без соответствия или просто из самих данных. Он заменяет нулевые значения в выражении значением, которое вы предоставляете в качестве второго аргумента.
- Одна ключевая ошибка, которую я совершил, которая стоила мне много времени, заключалась в предположении, что я могу просто группировать по имени при суммировании расстояний. Как я позже узнал, у вас может быть несколько пользователей с одним и тем же именем, поэтому вместо этого мне пришлось полагаться на id, который является уникальным.
Заключительные мысли:
- Я чувствую, что становлюсь лучше в SQL и Python, хотя занимаюсь этим всего неделю. Мне действительно нужно было освежить знания SQL, но удивительно видеть, что даже простые проблемы с Python иногда могут бросить вам вызов и помочь вам научиться чему-то новому.
- Если говорить более лично, то за последние пару дней я был довольно напряжен из-за внешних факторов. Из-за этого я задумался о том, должен ли я отказаться от некоторых обязательств, которые я взял на себя, чтобы иметь время на все.
- Но я понял, что это не выход. Пока вы можете работать над тем, что запланировали, без каких-либо компромиссов, тогда вы будете управлять, даже если внешние факторы ухудшатся.
- Если, наоборот, вы решите, что у вас нет ни мотивации, ни умственной энергии на все, и вы решите освободить немного времени для себя, это может обратно сказаться. >». В любой свободный момент ваш разум должен поразмыслить, он сосредоточится на самом худшем из возможных событий, и это вымотает вас.
- Поэтому помните: двигайтесь вперед каждый день, независимо от того, что происходит в мире, и вы сможете полностью раскрыть свой потенциал.