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++
// 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; } |
Java
// 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 |
Python3
# 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 |
C#
// 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 |
1
Please refer below article for more approaches.
Find the only element that appears k times.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.