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

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

LeetCode 75

1431. Kids With the Greatest Number of Candies

There are n kids with candies. You are given an integer array candies, where each candies[i] represents the number of candies the ith kid has, and an integer extraCandies, denoting the number of extra candies that you have.

Return a boolean array result of length n, where result[i] is true if, after giving the ith kid all the extraCandies, they will have the greatest number of candies among all the kids, or false otherwise.

Note that multiple kids can have the greatest number of candies.

Example 1:

Input: candies = [2,3,5,1,3], extraCandies = 3 Output: [true,true,true,false,true] Explanation: If you give all extraCandies to: - Kid 1, they will have 2 + 3 = 5 candies, which is the greatest among the kids. - Kid 2, they will have 3 + 3 = 6 candies, which is the greatest among the kids. - Kid 3, they will have 5 + 3 = 8 candies, which is the greatest among the kids. - Kid 4, they will have 1 + 3 = 4 candies, which is not the greatest among the kids. - Kid 5, they will have 3 + 3 = 6 candies, which is the greatest among the kids.

Example 2:

Input: candies = [4,2,1,1,2], extraCandies = 1 Output: [true,false,false,false,false] Explanation: There is only 1 extra candy. Kid 1 will always have the greatest number of candies, even if a different kid is given the extra candy.

Example 3:

Input: candies = [12,1,12], extraCandies = 10 Output: [true,false,true]

Constraints:

  • n == candies.length
  • 2 <= n <= 100
  • 1 <= candies[i] <= 100
  • 1 <= extraCandies <= 50


برای حل این مسئله، باید بررسی کنیم که اگر به هر بچه تمام آب‌نبات‌های اضافی رو بدیم، آیا اون بچه می‌تونه بیشترین تعداد آب‌نبات رو بین همه داشته باشه یا نه.

چطور الگوریتمش رو بفهمیم؟

  1. پیدا کردن بیشترین تعداد آب‌نباتی که یک بچه در حال حاضر داره چون فقط وقتی می‌تونیم از بقیه جلو بزنیم که تعدادمون از حداکثر موجود بیشتر بشه.
    مثلا برای [2,3,5,1,3] مقدار ماکسیمم 5 هست.
  2. بررسی کنیم اگر به هر بچه تمام extraCandies رو بدیم، آیا از مقدار ماکسیمم بیشتر یا برابر می‌شه؟اگر candies[i] + extraCandies >= max_candies باشه، یعنی اون بچه می‌تونه جزء بیشترین‌ها بشه و مقدار True می‌گیره.
    در غیر این صورت مقدار False برمی‌گردونیم.

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

class Solution:

def kidsWithCandies(self, candies: list[int], extraCandies: int) -> list[bool]:

max_candies = max(candies)

return [candy + extraCandies >= max_candies for candy in candies]

توضیح کد:

  1. مقدار بیشترین آب‌نبات در candies رو ذخیره می‌کنیم (max_candies = max(candies)).
  2. یک لیست comprehension استفاده می‌کنیم که برای هر candy بررسی کنه:اگر candy + extraCandies >= max_candies بود، مقدار True می‌گیره.
    در غیر این صورت False.

چرا این الگوریتم خوبه؟

✅ سریع اجرا می‌شه (O(n)):

  • پیدا کردن max زمان O(n) می‌بره.
  • بررسی مقدار هر عنصر هم O(n) هست.
  • در کل O(n) + O(n) = O(n) که خیلی سریعه.

✅ خوانا و تمیزه

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

✅ بهینه و بدون نیاز به لیست اضافی

  • لیست نهایی مستقیما با لیست comprehension ساخته می‌شه.


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

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


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