NeetCode 150 / Greedy
MediumGreedyO(n)
ভিডিওতে দেখো — YouTube @algonur_com

কোড

Python
def maxSubArray(nums: list[int]) -> int:
    cur_sum = max_sum = nums[0]
    for num in nums[1:]:
        # Extend current or start fresh
        cur_sum = max(num, cur_sum + num)
        max_sum = max(max_sum, cur_sum)
    return max_sum
Java
public int maxSubArray(int[] nums) {
    int curSum = nums[0], maxSum = nums[0];
    for (int i = 1; i < nums.length; i++) {
        curSum = Math.max(nums[i], curSum + nums[i]);
        maxSum = Math.max(maxSum, curSum);
    }
    return maxSum;
}
Kotlin
fun maxSubArray(nums: IntArray): Int {
    var curSum = nums[0]; var maxSum = nums[0]
    for (i in 1 until nums.size) {
        curSum = maxOf(nums[i], curSum + nums[i])
        maxSum = maxOf(maxSum, curSum)
    }
    return maxSum
}
C++
int maxSubArray(vector<int>& nums) {
    int curSum = nums[0], maxSum = nums[0];
    for (int i = 1; i < nums.size(); i++) {
        curSum = max(nums[i], curSum + nums[i]);
        maxSum = max(maxSum, curSum);
    }
    return maxSum;
}

জটিলতা

O(n)
সময় — অ্যারেটা একবারই ঘুরি, ম্যাপে খোঁজা O(1)।
O(1)
জায়গা — সবচেয়ে খারাপ ক্ষেত্রে সব সংখ্যা ম্যাপে থাকে।
আগের সমস্যা← Regular Expression Matchingপরের সমস্যাJump Game →