First element that appears even number of times in an array

Given an array, find the first element that appears even number of times in the array. It returns the element if exists otherwise returns 0.

Examples:

Input : arr[] = {1, 5, 4, 7, 4, 1, 5, 7, 1, 5};
Output : 4
Explanation, 4 is the first element that appears even number of times.



Input : arr[] = {2, 4, 6, 8, 1, 6};
Output : 6
Explanation, 6 is the first element that appears even number of times

A Simple solution is to consider every element one by one. For every element, start counting the frequency, the first element whose count is even gives the result. Time complexity of this solution is O(n^{2}).

An Efficient solution can solve this problem using hash map having O(n) time and O(n) extra space as:

    For each element a[i] of the array, do the following:

  • If a[i] is not present in the hash map, insert it in hash map as pair (a[i], false).
  • If a[i] is present in the hash map and value is true, toggle it to false.
  • If a[i] is present in the hash map and value is false, toggle it to true.
  • To find the first element appearing even number of times, traverse the array again and find a[i] with value true and return.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ code to find the first element
// that appears even number times
#include <bits/stdc++.h>
using namespace std;
int firstEven(int arr[], int n)
{
  
    unordered_map<int, bool> map1;
  
    for (int i = 0; i < n; i++)
    {
  
        // first time occurred
        if (map1.find(arr[i]) == map1.end())
            map1.insert(pair <int,bool> (arr[i],false));
  
        // toggle for repeated occurrence
        else
        {
            bool val = map1.find(arr[i])->second;
            if (val == true)
                map1.find(arr[i])->second = false;
            else
                map1.find(arr[i])->second = true;
        }
    }
  
    int j = 0;
    for (j = 0; j < n; j++)
    {
  
        // first integer with true value
        if (map1.find(arr[j])->second == true)
            break;
    }
  
    return arr[j];
}
  
// Driver code
int main()
{
    int arr[] = { 2, 4, 6, 8, 1, 6 };
    cout << firstEven(arr, 6);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// JAVA code to find the first element
// that appears even number times
import java.util.*;
class GFG {
    public static int firstEven(int arr[], int n)
    {
  
        HashMap<Integer, Boolean> map = 
                 new HashMap<Integer, Boolean>();
  
        for (int i = 0; i < n; i++) {
  
            // first time occurred
            if (map.get(arr[i]) == null
                map.put(arr[i], false);
              
            // toggle for repeated occurrence
            else {
                boolean val = map.get(arr[i]);
                if (val == true)
                    map.put(arr[i], false);
                else
                    map.put(arr[i], true);
            }
        }
  
        int j = 0;
        for (j = 0; j < n; j++) {
  
            // first integer with true value
            if (map.get(arr[j]) == true)
                break;
        }
  
        return arr[j];
    }
  
    // Driver code
    public static void main(String[] args)
    {
        int arr[] = { 2, 4, 6, 8, 1, 6 };
        int n = arr.length;
        System.out.println(firstEven(arr, n));
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to find the first element 
# that appears even number times 
def firstEven(arr, n): 
  
    map1 = {} 
    for i in range(0, n): 
      
        # first time occurred 
        if arr[i] not in map1: 
            map1[arr[i]] = False
  
        # toggle for repeated occurrence 
        else:
            map1[arr[i]] = not map1[arr[i]]
  
    for j in range(0, n): 
      
        # first integer with true value 
        if map1[arr[j]] == True
            break
      
    return arr[j] 
  
# Driver code 
if __name__ == "__main__":
  
    arr = [2, 4, 6, 8, 1, 6
    print(firstEven(arr, 6))
  
# This code is contributed 
# by Rituraj Jain

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to find the first element
// that appears even number times
using System;
using System.Collections.Generic;
  
class GFG 
{
    static int firstEven(int []arr, 
                         int n)
    {
        var map = new Dictionary<int
                                 string>();
          
        var hash = new HashSet<int>(arr);
          
        foreach (int a in hash)
            map.Add(a, "null");
              
        for (int i = 0; i < n; i++) 
        {
  
            // first time occurred
            if (map[arr[i]].Equals("null"))
                map[arr[i]] = "false";
              
            // toggle for repeated
            // occurrence
            else 
            {
                string val = map[arr[i]];
                if (val.Equals("true"))
                    map[arr[i]] = "false";
                else
                    map[arr[i]] = "true";
            }
        }
  
        int j = 0;
        for (j = 0; j < n; j++)
        {
  
            // first integer with
            // true value
            if (map[arr[j]].Equals("true"))
                break;
        }
        return arr[j];
    }
  
    // Driver code
    static void Main()
    {
        int []arr = new int[]{ 2, 4, 6,
                               8, 1, 6 };
        int n = arr.Length;
        Console.Write(firstEven(arr, n));
    }
}
  
// This code is contributed by 
// Manish Shaw(manishshaw1)

chevron_right


Output:

6

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



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : manishshaw1, rituraj_jain



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.