ویرگول
ورودثبت نام
علی برادر خدام خسروشاهی
علی برادر خدام خسروشاهیعلی برادر خدام خسروشاهی نویسنده و برنامه نویس
علی برادر خدام خسروشاهی
علی برادر خدام خسروشاهی
خواندن ۲ دقیقه·۹ ماه پیش

حل سوال استخدامی برنامه نویسی پایتون قسمت چهارم با علی برادر خدام خسروشاهی

LeetCode75

605. Can Place Flowers

You have a long flowerbed in which some of the plots are planted, and some are not. However, flowers cannot be planted in adjacent plots.

Given an integer array flowerbed containing 0's and 1's, where 0 means empty and 1 means not empty, and an integer n, return true if n new flowers can be planted in the flowerbed without violating the no-adjacent-flowers rule and false otherwise.

Example 1:

Input: flowerbed = [1,0,0,0,1], n = 1 Output: true

Example 2:

Input: flowerbed = [1,0,0,0,1], n = 2 Output: false

Constraints:

  • 1 <= flowerbed.length <= 2 * 104
  • flowerbed[i] is 0 or 1.
  • There are no two adjacent flowers in flowerbed.
  • 0 <= n <= flowerbed.length

تحلیل و فهم مسئله

  • یک آرایه‌ی flowerbed داریم که شامل 0 و 1 است:1 یعنی جای گل کاشته شده.
    0 یعنی جای خالی.
  • نمی‌توانیم دو گل کنار هم بکاریم.
  • باید ببینیم آیا می‌توانیم n گل جدید بکاریم یا نه.

الگوریتم حل مسئله

  1. روی کل آرایه flowerbed حرکت می‌کنیم و بررسی می‌کنیم که آیا در i می‌توان گل کاشت یا نه.
  2. شرایط کاشتن گل در i‌ام:خانه‌ی i باید 0 باشد.
    خانه‌ی قبلی (i-1) و بعدی (i+1) هم 0 باشند (یا خارج از محدوده باشند).
  3. اگر گل بکاریم، مقدار flowerbed[i] را 1 می‌کنیم و n را یکی کم می‌کنیم.
  4. اگر n == 0 شد، یعنی گل‌ها را کاشتیم و باید True برگردانیم.
  5. اگر در پایان n هنوز مثبت بود، یعنی نشد همه گل‌ها را بکاریم، پس False برمی‌گردانیم.


کد پایتون (با کلاس Solution):

class Solution:

def canPlaceFlowers(self, flowerbed: list[int], n: int) -> bool:

for i in range(len(flowerbed)):

# اگر همه گل‌ها کاشته شدن، پایان بده

return True

if (flowerbed[i] == 0 and

(i == 0 or flowerbed[i-1] == 0) and

(i == len(flowerbed)-1 or flowerbed[i+1] == 0)):

# می‌تونیم گل بکاریم

flowerbed[i] = 1

n -= 1

# اگر `n` گل کاشته شد، True برگردون

return n == 0

#علی برادر خدام خسروشاهی

توضیح کد:

  1. حلقه روی flowerbedبررسی می‌کنیم که آیا می‌توان در i گل کاشت یا نه.
    چک می‌کنیم که i، i-1، i+1 صفر باشند.
    اگر شد، مقدار flowerbed[i] را 1 می‌کنیم و n -= 1 انجام می‌دهیم.
    اگر n == 0 شد، یعنی کافی بوده و True برمی‌گردانیم.
  2. در پایان، اگر هنوز n > 0 باشد، False برمی‌گردانیم.


تحلیل زمانی

✅ زمان اجرای O(n)

  • فقط یکبار روی آرایه حرکت می‌کنیم، پس عملکرد سریع است.

✅ بدون لیست اضافی (O(1) فضای اضافی)

  • مستقیماً روی flowerbed تغییر می‌دهیم، پس حافظه اضافی مصرف نمی‌کنیم.

✅ مؤثر و ساده

  • به جای محاسبات پیچیده، از یک حلقه‌ی ساده و چند شرط منطقی استفاده کردیم.


حالا تو هم می‌تونی مثال‌های خودت رو تست کنی! 🚀😊

علی برادر خدام خسروشاهی



الگوریتمبرنامه نویسیپایتونآموزش پایتون
۲
۰
علی برادر خدام خسروشاهی
علی برادر خدام خسروشاهی
علی برادر خدام خسروشاهی نویسنده و برنامه نویس
شاید از این پست‌ها خوشتان بیاید