Skip to content
Related Articles

Related Articles

Minimum array element changes to make its elements 1 to N

View Discussion
Improve Article
Save Article
  • Difficulty Level : Medium
  • Last Updated : 06 May, 2021

Suppose you are given an array with N elements with any integer values. You need to find the minimum number of elements of the array which must be changed so that array has all integer values between 1 and N(including 1, N).
Examples: 
 

Input : arr[] = {1 4 5 3 7}
Output : 1
We need to replace 7 with 2 to satisfy
condition hence minimum changes is 1.

Input : arr[] = {8 55 22 1 3 22 4 5}
Output :3

 

We insert all elements in a hash table. We then iterate from 1 to N and check whether the element is present in the hash table. If it is not present than increment count. The final value of count will be the minimum changes required.
 

C++




// Count minimum changes to make array
// from 1 to n
#include <bits/stdc++.h>
using namespace std;
 
int countChanges(int arr[], int n)
{
    // it will contain all initial elements
    // of array for log(n) complexity searching
    unordered_set<int> s;
 
    // Inserting all elements in a hash table
    for (int i = 0; i < n; i++)
        s.insert(arr[i]);
     
    // Finding elements to be changed
    int count = 0;
    for (int i = 1; i <= n; i++)
        if (s.find(i) == s.end())
            count++;
 
    return count;
}
 
int main()
{
    int arr[] = {8, 55, 22, 1, 3, 22, 4, 5};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << countChanges(arr, n);
    return 0;
}


Java




// Count minimum changes to
// make array from 1 to n
import java.util.Set;
import java.util.HashSet;
 
class GfG
{
     
    static int countChanges(int arr[], int n)
    {
        // It will contain all initial elements
        // of array for log(n) complexity searching
        Set<Integer> s = new HashSet<>();
     
        // Inserting all elements in a hash table
        for (int i = 0; i < n; i++)
            s.add(arr[i]);
         
        // Finding elements to be changed
        int count = 0;
        for (int i = 1; i <= n; i++)
            if (!s.contains(i))
                count++;
     
        return count;
    }
 
    // Driver code
    public static void main(String []args)
    {
         
        int arr[] = {8, 55, 22, 1, 3, 22, 4, 5};
        int n = arr.length;
 
        System.out.println(countChanges(arr, n));
    }
}
 
// This code is contributed by Rituraj Jain


Python 3




# Count minimum changes to
# make array from 1 to n
 
def countChanges(arr, n):
 
    # it will contain all initial
    # elements of array for log(n)
    # complexity searching
    s = []
 
    # Inserting all elements in a list
    for i in range(n):
        s.append(arr[i])
     
    # Finding elements to be changed
    count = 0
    for i in range(1, n + 1) :
        if i not in s:
            count += 1
 
    return count
 
# Driver Code
if __name__ == "__main__":
    arr = [8, 55, 22, 1, 3, 22, 4, 5]
    n = len(arr)
    print(countChanges(arr, n))
 
# This code is contributed
# by ChitraNayal


C#




// C# program to Count minimum changes to
// make array from 1 to n
using System;
using System.Collections.Generic;
 
class GfG
{
     
    static int countChanges(int []arr, int n)
    {
        // It will contain all initial elements
        // of array for log(n) complexity searching
        HashSet<int> s = new HashSet<int>();
     
        // Inserting all elements in a hash table
        for (int i = 0; i < n; i++)
            s.Add(arr[i]);
         
        // Finding elements to be changed
        int count = 0;
        for (int i = 1; i <= n; i++)
            if (!s.Contains(i))
                count++;
     
        return count;
    }
 
    // Driver code
    public static void Main(String []args)
    {
        int []arr = {8, 55, 22, 1, 3, 22, 4, 5};
        int n = arr.Length;
        Console.WriteLine(countChanges(arr, n));
    }
}
 
// This code is contributed by 29AjayKumar


PHP




<?php
// Count minimum changes to
// make array from 1 to n
 
function countChanges(&$arr, $n)
{
    // it will contain all initial
    // elements of array for log(n)
    // complexity searching
    $s = array();
 
    // Inserting all elements
    // in an array
    for ($i = 0; $i < $n; $i++)
        array_push($s, $arr[$i]);
     
    // Finding elements to be changed
    $count = 0;
    for ($i = 1; $i <= $n; $i++)
        if (!in_array($i, $s))
            $count++;
 
    return $count;
}
 
// Driver Code
$arr = array(8, 55, 22, 1, 3, 22, 4, 5);
$n = sizeof($arr);
echo countChanges($arr, $n);
 
// This code is contributed
// by ChitraNayal
?>


Javascript




<script>
 
// Count minimum changes to
// make array from 1 to n
     
    function countChanges(arr,n)
    {
        // It will contain all initial elements
        // of array for log(n) complexity searching
        let s = new Set();
       
        // Inserting all elements in a hash table
        for (let i = 0; i < n; i++)
            s.add(arr[i]);
           
        // Finding elements to be changed
        let count = 0;
        for (let i = 1; i <= n; i++)
            if (!s.has(i))
                count++;
       
        return count;
    }
     
    // Driver code
    let arr=[8, 55, 22, 1, 3, 22, 4, 5];
    let n = arr.length;
    document.write(countChanges(arr, n));
     
    // This code is contributed by rag2127
     
</script>


Output: 

3

 

Time Complexity: O(n) 
Auxiliary Space: O(n)
 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!