Open In App

C++ Program to Remove All Occurrences of an Element in an Array

Improve
Improve
Like Article
Like
Save
Share
Report

Here we will see how to remove all the occurrences of an element in an array using a C++ program. Below are the examples:

Input: {1, 4, 3, 6, 8, 3, 9, 10, 3, 3, 7}
               target=3
Output: {1, 4, 6, 8, 9, 10, 7}

Input: {12, 11, 10, 17, 12, 4, 7, 12} 
            target=12
Output: {11, 10, 17, 4, 7}

There are 2 ways to remove all the occurrences of an element in an array in C++:

  1. Brute Force Approach.
  2. Optimized Approach (In-place Shifting).

Let’s start discussing each of these methods in detail.

1. Brute-force Approach

In this method, create another array and copy all elements except the target element. Below is the C++ program to remove all the occurrences of an element in an array using a brute-force approach:

C++




// C++ program to remove all the
// occurrences
#include <iostream>
using namespace std;
 
void remove_all_occurrence(int arr[],
                          int target,
                          int n)
{
  int cnt = 0;
   
  // Counting all occurrence of
  // target element
  for(int i = 0; i < n; i++)
  {
    if(arr[i] == target)
      cnt++;
  }
       
  // Creating new array of
  // size = original size -
  // no. of target element
  int new_arr[n - cnt];
  int ind = 0;
  for(int i = 0; i < n; i++)
  {
    if(arr[i] != target)
    {
      new_arr[ind] = arr[i];
      ind++;
    }
  }
       
  // Printing the new array
  int m = (sizeof(new_arr) /
           sizeof(new_arr[0]));
  for(int i = 0; i < m; i++)
  {
    cout << new_arr[i] << " ";
  }
  return;
}
 
// Driver code
int main()
{
  int arr[]={1, 4, 3, 6, 8,
             3, 9, 10, 3, 3, 7};
  int target = 3;
  int n = (sizeof(arr) /
           sizeof(arr[0]));
  remove_all_occurrence(arr, target, n);
  return 0;
}


Output

1 4 6 8 9 10 7 

Time Complexity: O(n)

Space Complexity: O(n)

2. Optimized Approach (In-place Shifting)

In this method, shift the non-target element to the left side. 

  1. Check whether the current element is the target element or not.
  2. If it is the target element increase the cnt variable.
  3. After this element, all the non-target elements will shift left with the gap of (n-cnt).

Below is the C++ program to remove all occurrences of an element from an array using an optimized approach:

C++




// C++ program to remove all occurrences
// of an element from an array using
// optimized approach
#include <iostream>
using namespace std;
 
void remove_all_occurrence(int arr[],
                          int target,
                          int n)
{
  int cnt = 0;
   
  // Shifting non target elements
  // to the left side
  for(int i = 0; i < n; i++)
  {
    if(arr[i] != target)
    {
      arr[i - cnt] = arr[i];
    }
    else
    {
      cnt++;
    }
  }
   
  // Printing the array
  for(int i = 0; i < (n - cnt); i++)
  {
    cout << arr[i] << " ";
  }
  return
}
 
// Driver code
int main()
{
  int arr[] = {1, 4, 3, 6, 8, 3,
               9, 10, 3, 3, 7};
  int target = 3;
  int n = (sizeof(arr) /
           sizeof(arr[0]));
  remove_all_occurrence(arr, target, n);
  return 0;
}


Output

1 4 6 8 9 10 7 
  • Time Complexity: O(n)
  • Space Complexity: O(1)


Last Updated : 08 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads