سوال 53

عنوان سوال : Maximum Subarray

  • متوسط
  • تقسیم و غلبه
  • برنامه نویسی پویا
  • آرایه

یک آرایهٔ عدد صحیح nums داده شده است.
هدف این است که بزرگ‌ترین مجموع یک زیرآرایهٔ پیوسته را پیدا کرده و مقدار آن را برگردانید.


مثال

ورودی: nums = [-2,1,-3,4,-1,2,1,-5,4]
خروجی: 6
توضیح: زیرآرایهٔ [4,-1,2,1] بیشترین مجموع را دارد که برابر با 6 است.


مثال

ورودی: nums = [1]
خروجی: 1
توضیح: زیرآرایهٔ [1] بیشترین مجموع را دارد.


مثال

ورودی: nums = [5,4,-1,7,8]
خروجی: 23
توضیح: زیرآرایهٔ [5,4,-1,7,8] بیشترین مجموع را دارد.


محدودیت‌ها

  • 1 <= nums.length <= 10^5
  • -10^4 <= nums[i] <= 10^4

راه حل

public int MaxSubArray(int[] nums)
{
    var maxSubArrayValue = nums[0];
    var currentSum = 0;

    foreach (var item in nums)
    {
        if (currentSum < 0)
        {
            currentSum = 0;
        }

        currentSum += item;
        maxSubArrayValue = Math.Max(maxSubArrayValue, currentSum);
    }

    return maxSubArrayValue;
}

کپی رایت © mhkarami97