День 27 опанування алгоритмів і структур даних (Leetcode)

😅 Минуло вже 2 місяці відтоді, як я востаннє розв'язував задачу на Leetcode. Чесно кажучи, шкодую, що взяв таку довгу паузу — здавалося, ніби втратив хватку у вирішенні задач. АЛЕ… я повернувся, і сподіваюся, що це стане початком нового безперервного серіалу успіхів! 🚀

Задача дня: “16. 3Sum Closest

Мені потрібно було знайти три числа в масиві, сума яких найближча до заданої цілі. На перший погляд концепція проста, але виклик полягав у тому, щоб ефективно налаштувати роботу двох вказівників у розв’язку. Раніше я вже розв'язував задачу 3Sum, і зрозумів, що ця задача досить схожа, але з невеликим нюансом. Ось як я підійшов до вирішення:

  1. Сортування масиву: Цей крок є вирішальним для ефективного застосування техніки двох вказівників.
  2. Ітерація з двома вказівниками: Для кожного елемента застосовував техніку двох чисел (two-sum) до решти елементів, рухаючи вказівники залежно від того, як сума порівнюється з ціллю.

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

Моє рішення:

pic

Ключові моменти:

  • Вирішив задачу з першої спроби!
  • Дуже допомогло, що я записував свої думки на папері, поки розбирався з рішенням.
  • Складність алгоритму: O(n²).
  • Усвідомив, наскільки я “заржавів” — треба відновлювати навички та пам’ять!
  • 💻 Час виконання: 31 хвилина, і впевнений, що міг би зробити це швидше, якби не така тривала перерва.

Після цього вирішення я відчуваю СТІЛЬКИ впевненості. Попереду ще багато задач, але я готовий рухатися далі — одна задача щодня! 💪 Вперед!

Перекладено з: Day 27 of Mastering DSA (Leetcode)

Leave a Reply

Your email address will not be published. Required fields are marked *