И снова здравствуйте. Это Ежедневная практика LeetCode. Итог сегодняшнего дня: 2 задачи за 30 минут, 1 SQL, 1 Python. Идеально сбалансированный, как и все должно быть.

Немного математики



Статистика:

  • Идея решения заключалась в том, чтобы проверить, сколько призраков имеет каждое число в списке, а затем вычислить результат на основе этого.
  • Поскольку каждая пара таких видений имеет значение, нам нужно использовать математическую формулу для количества неупорядоченных пар, которая равна n * (n-1) / 2. . Это гарантированно делится на 2, но мы используем оператор // для получения целочисленного результата
  • Я также подумал о том, чтобы сначала отсортировать массив, затем просмотреть его и агрегировать количество для каждого числа, но я понял, что использование словаря будет более эффективным, чем сортировка (O( n) по сравнению с O(nlogn))

Достойный противник SQL



Статистика:

  • Эта задача SQL была самой сложной из тех, что я решал в этой серии, но она помогла мне привыкнуть к рабочему процессу: сначала вы пишете небольшой запрос, тестируете его. , затем добавьте дополнительный код, протестируйте еще раз и так далее...
  • Функция nvl() очень полезна, когда вы ожидаете получить в своем запросе некоторые нулевые значения, будь то из-за левого соединения без соответствия или просто из самих данных. Он заменяет нулевые значения в выражении значением, которое вы предоставляете в качестве второго аргумента.
  • Одна ключевая ошибка, которую я совершил, которая стоила мне много времени, заключалась в предположении, что я могу просто группировать по имени при суммировании расстояний. Как я позже узнал, у вас может быть несколько пользователей с одним и тем же именем, поэтому вместо этого мне пришлось полагаться на id, который является уникальным.

Заключительные мысли: