😅 Минуло вже 2 місяці відтоді, як я востаннє розв'язував задачу на Leetcode. Чесно кажучи, шкодую, що взяв таку довгу паузу — здавалося, ніби втратив хватку у вирішенні задач. АЛЕ… я повернувся, і сподіваюся, що це стане початком нового безперервного серіалу успіхів! 🚀
Задача дня: “16. 3Sum Closest”
Мені потрібно було знайти три числа в масиві, сума яких найближча до заданої цілі. На перший погляд концепція проста, але виклик полягав у тому, щоб ефективно налаштувати роботу двох вказівників у розв’язку. Раніше я вже розв'язував задачу 3Sum, і зрозумів, що ця задача досить схожа, але з невеликим нюансом. Ось як я підійшов до вирішення:
- Сортування масиву: Цей крок є вирішальним для ефективного застосування техніки двох вказівників.
- Ітерація з двома вказівниками: Для кожного елемента застосовував техніку двох чисел (two-sum) до решти елементів, рухаючи вказівники залежно від того, як сума порівнюється з ціллю.
Головна складність полягала в тому, коли переміщувати початковий та кінцевий вказівники, щоб сума трьох чисел ставала ближчою до цілі. Як тільки це стало зрозумілим, реалізація рішення була досить простою.
Моє рішення:
✅ Ключові моменти:
- Вирішив задачу з першої спроби!
- Дуже допомогло, що я записував свої думки на папері, поки розбирався з рішенням.
- Складність алгоритму: O(n²).
- Усвідомив, наскільки я “заржавів” — треба відновлювати навички та пам’ять!
- 💻 Час виконання: 31 хвилина, і впевнений, що міг би зробити це швидше, якби не така тривала перерва.
Після цього вирішення я відчуваю СТІЛЬКИ впевненості. Попереду ще багато задач, але я готовий рухатися далі — одна задача щодня! 💪 Вперед!
Перекладено з: Day 27 of Mastering DSA (Leetcode)