Array Manipulation

Starting with a 1-indexed array of zeros and a list of operations, for each operation add a value to each the array element between two given indices, inclusive. Once all operations have been performed, return the maximum value in the array.

Example:

Input:  n=5,m=3,queries={{1,2,100},{2,5,100},{3,4,100}}
Output: 200

Approach

Java


public class ArrayManipulation {
    public static void main(String[] args) {
        int n = 5, m = 3;

        int[][] queries = { { 12100 }, { 25100 }, { 34100 } };
        System.out.println(arrayManipulation(n, queries));
    }

    static long arrayManipulation(int nint[][] queries) {
        long arr[] = new long[n + 2];
        int abk;
        int m = queries.length;
        for (int i = 0; i < m; i++) {
            a = queries[i][0];
            b = queries[i][1];
            k = queries[i][2];
            arr[a] += k;
            arr[b + 1] += -k;
        }
        for (int i = 2; i <= n; i++) {
            arr[i] += arr[i - 1];
        }
        long max1 = arr[1];
        for (int i = 2; i <= n; i++) {
            if (arr[i] > max1) {
                max1 = arr[i];
            }
        }
        return max1;
    }
}


C++

#include <bits/stdc++.h>
using namespace std;

long arrayManipulation(int nvector<vector<int>> queries)
{
    long long *arr = new long long[n + 2];
    fill(arrarr + n + 20);
    int abk;
    int m = queries.size();
    for (long long i = 0i < mi++)
    {
        a = queries[i][0];
        b = queries[i][1];
        k = queries[i][2];
        arr[a] += k;
        arr[b + 1] += -k;
    }
    for (long long i = 2i <= ni++)
    {
        arr[i] += arr[i - 1];
    }
    long long max1 = arr[1];
    for (int i = 2i <= ni++)
    {
        if (arr[i] > max1)
        {
            max1 = arr[i];
        }
    }
    return max1;
}
int main()
{
    long long n = 5m = 3;

    vector<vector<int>> queries = {{12100}, {25100}, {34100}};
    cout << arrayManipulation(nqueries);
    return 0;
}


No comments:

Post a Comment