How to find the maximum length of a subarray having a sum equal to K in C

1 Answer

0 votes
#include <stdio.h>
#include <math.h>

int maxSubArrayLenEqualsToK(int arr[], int size, int k) {
    int max_len = 0;
    int sum = 0;
    int leftidx = 0;

    for (int rightidx = 0; rightidx < size; rightidx++) {
        sum += arr[rightidx];

        while (sum > k && leftidx < rightidx) {
            sum -= arr[leftidx];
            leftidx++;
        }

        max_len = fmax(max_len, rightidx - leftidx + 1);
    }

    return max_len;
}

int main() {
    int arr[] = {1, -1, 5, -2, -3, 2, 3, 3};
    int k = 3;
    int size = sizeof(arr) / sizeof(arr[0]);
    
    // 1, -1, 5, -2 = 3 (4)
    // 5, -2 = 3 (2)
    // -2, -3, 2, 3, 3 = 3 (5)

    printf("%d", maxSubArrayLenEqualsToK(arr, size, k));

    return 0;
}



/*
run:

5

*/

 



answered Feb 24, 2024 by avibootz
...