Find the Next!

You are given an array A of length N. For any given integer X, you need to find an integer Z strictly greater than X such that Z is not present in the array A. You need to minimize the value of Z.

Example:

Input: n = 5, q = 2, arr = {2, 7, 5, 9, 15}, queries = {3, 9}

Output:

4 10

Approach:

C++

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

void findTheNext(int nint qvector<int&arr,
                 vector<int&queries)
{
    unordered_map<intintmp;
    sort(arr.begin(), arr.end());
    for (int i = 0i < n;)
    {
        int j = i;
        for (j = ij < n - 1j++)
        {
            if (arr[j] < arr[j + 1] - 1)
                break;
        }
        for (int k = ik <= jk++)
            mp[arr[k]] = arr[j];
        i = j + 1;
    }

    for (int i = 0i < qi++)
    {
        int x = queries[i];

        if (mp[x] == 0)
        {
            if (mp[x + 1] == 0)
                cout << x + 1 << "\n";
            else
                cout << mp[x + 1] + 1 << "\n";
        }
        else
            cout << mp[x] + 1 << "\n";
    }
}
int main()
{

    int n = 5q = 2;

    vector<intarr = {275915};
    vector<intqueries = {39};

    findTheNext(nqarrqueries);

    return 0;
}


No comments:

Post a Comment