Minimum operations to make the MEX of the given set equal to x
Last Updated :
09 Nov, 2023
Given a set of n integers, perform minimum number of operations (you can insert/delete elements into/from the set) to make the MEX of the set equal to x (that is given).
Note:- The MEX of a set of integers is the minimum non-negative integer that doesn’t exist in it. For example, the MEX of the set {0, 2, 4} is 1 and the MEX of the set {1, 2, 3} is 0.
Examples :
Input : n = 5, x = 3
0 4 5 6 7
Output : 2
The MEX of the set {0, 4, 5, 6, 7} is 1 which is
not equal to 3. So, we should add 1 and 2 to the
set. After adding 1 and 2, the set becomes
{0, 1, 2, 4, 5, 6, 7} and 3 is the minimum
non-negative integer that doesn't exist in it.
So, the MEX of this set is 3 which is equal to
x i.e. 3. So, the output of this example is 2
as we inserted 1 and 2 in the set.
Input : n = 1, x = 0
1
Output : 0
In this example, the MEX of the given set {1}
is already 0. So, we do not need to perform
any operation. So, the output is 0.
Approach: The approach is to see that in the final set all the elements less than x should exist, x shouldn’t exist and any element greater than x doesn’t matter. So, we will count the number of elements less than x that don’t exist in the initial set and add this to the answer. If x exists we will add 1 to the answer because x should be removed.
Below is the implementation of above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int minOpeartions( int arr[], int n, int x)
{
int k = x, i = 0;
while (n--) {
if (arr[n] < x)
k--;
if (arr[n] == x)
k++;
}
return k;
}
int main()
{
int arr[] = { 0, 4, 5, 6, 7 };
int n = sizeof (arr) / sizeof (arr[0]);
int x = 3;
cout << minOpeartions(arr, n, x) << endl;
}
|
Java
import java.io.*;
class GFG {
static int minOpeartions( int arr[], int n, int x)
{
int k = x, i = 0 ;
n--;
while (n > - 1 ) {
if (arr[n] < x)
k--;
if (arr[n] == x)
k++;
n--;
}
return k;
}
public static void main(String args[])
{
int arr[] = { 0 , 4 , 5 , 6 , 7 };
int n = arr.length;
int x = 3 ;
System.out.println(minOpeartions(arr, n, x));
}
}
|
Python
def minOpeartions(arr, n, x) :
k = x
i = 0
n = n - 1
while (n> - 1 ) :
if (arr[n] < x) :
k = k - 1
if (arr[n] = = x) :
k = k + 1
n = n - 1
return k
arr = [ 0 , 4 , 5 , 6 , 7 ]
n = len (arr)
x = 3
print ( minOpeartions(arr, n, x))
|
C#
using System;
class GFG {
static int minOpeartions( int [] arr,
int n, int x)
{
int k = x;
n--;
while (n > -1) {
if (arr[n] < x)
k--;
if (arr[n] == x)
k++;
n--;
}
return k;
}
public static void Main()
{
int [] arr = { 0, 4, 5, 6, 7 };
int n = arr.Length;
int x = 3;
Console.WriteLine(
minOpeartions(arr, n, x));
}
}
|
Javascript
<script>
function minOpeartions(arr, n, x)
{
let k = x, i = 0;
while (n-- > 0) {
if (arr[n] < x)
k--;
if (arr[n] == x)
k++;
}
return k;
}
let arr = [ 0, 4, 5, 6, 7 ];
let n = arr.length;
let x = 3;
document.write(minOpeartions(arr, n, x));
</script>
|
PHP
<?php
function minOpeartions( $arr , $n , $x )
{
$k = $x ; $i = 0;
while ( $n --)
{
if ( $arr [ $n ] < $x )
$k --;
if ( $arr [ $n ] == $x )
$k ++;
}
return $k ;
}
$arr = array (0, 4, 5, 6, 7);
$n = count ( $arr );
$x = 3;
echo minOpeartions( $arr , $n , $x ) ;
?>
|
Time Complexity: O(n)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...