Find the only element that appears b times

Given an array where every element occurs a times, except one element which occurs b (a>b) times. Find the element that occurs b times.

Examples:

Input : arr[]  = [1, 1, 2, 2, 2, 3, 3, 3]
         a = 3, b = 2
Output : 1

Add each number once and multiply the sum by a, we will get a times the sum of each element of the array. Store it as a_sum. Subtract the sum of the whole array from the a_sum and divide the result by (a-b). The number we get is the required number (which appears b times in the array).

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to find the only element that 
// appears b times
#include <bits/stdc++.h>
using namespace std;
  
int appearsbTimes(int arr[], int n, int a, int b)
{
    unordered_set<int> s;
  
    int a_sum = 0, sum = 0;
  
    for (int i = 0; i < n; i++) {
        if (s.find(arr[i]) == s.end()) {
            s.insert(arr[i]);
            a_sum += arr[i];
        }
  
        sum += arr[i];
    }
  
    a_sum = a * a_sum;
  
    return ((a_sum - sum) / (a - b));
}
  
int main()
{
    int arr[] = { 1, 1, 2, 2, 2, 3, 3, 3 };
    int a = 3, b = 2;
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << appearsbTimes(arr, n, a, b);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find the only element that 
// appears b times
import java.util.*;
  
class GFG 
{
static int appearsbTimes(int arr[], int n, 
                         int a, int b)
{
    HashSet<Integer> s = new HashSet<Integer>();
  
    int a_sum = 0, sum = 0;
  
    for (int i = 0; i < n; i++)
    {
        if (!s.contains(arr[i]))
        {
            s.add(arr[i]);
            a_sum += arr[i];
        }
  
        sum += arr[i];
    }
    a_sum = a * a_sum;
  
    return ((a_sum - sum) / (a - b));
}
  
// Driver Code
public static void main(String[] args) 
{
    int arr[] = { 1, 1, 2, 2, 2, 3, 3, 3 };
    int a = 3, b = 2;
    int n = arr.length;
    System.out.println(appearsbTimes(arr, n, a, b));
}
}
  
// This code is contributed by 29AjayKumar

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find the only 
# element that appears b times
def appearsbTimes(arr, n, a, b):
  
    s = dict()
  
    a_Sum = 0
    Sum = 0
  
    for i in range(n):
        if (arr[i] not in s.keys()):
            s[arr[i]] = 1
            a_Sum += arr[i]
  
        Sum += arr[i]
          
    a_Sum = a * a_Sum
  
    return ((a_Sum - Sum) // (a - b))
  
# Driver code
arr = [1, 1, 2, 2, 2, 3, 3, 3]
a, b = 3, 2
n = len(arr)
print(appearsbTimes(arr, n, a, b))
  
# This code is contributed by mohit kumar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find the only element that 
// appears b times
using System;
using System.Collections.Generic;
  
class GFG 
{
      
static int appearsbTimes(int []arr, int n, 
                        int a, int b)
{
    HashSet<int> s = new HashSet<int>();
  
    int a_sum = 0, sum = 0;
  
    for (int i = 0; i < n; i++)
    {
        if (!s.Contains(arr[i]))
        {
            s.Add(arr[i]);
            a_sum += arr[i];
        }
  
        sum += arr[i];
    }
    a_sum = a * a_sum;
  
    return ((a_sum - sum) / (a - b));
}
  
// Driver Code
public static void Main(String[] args) 
{
    int []arr = { 1, 1, 2, 2, 2, 3, 3, 3 };
    int a = 3, b = 2;
    int n = arr.Length;
    Console.WriteLine(appearsbTimes(arr, n, a, b));
}
}
  
// This code is contributed by Princi Singh

chevron_right


Output:

1

Please refer below article for more approaches.

Find the only element that appears k times.



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.