
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Maximum Occurred Integer in N Ranges using C++
In this problem, we are given N ranges. Our task is to maximum occurred integer in n ranges.
For the starting and ending value of all ranges. We need to find the value which occurs the most.
Let’s take an example to understand the problem,
Input
S1 = 1, E1 = 3 S2 = 2, E2 = 6 S3 = 3, E3 = 4
Output
2
Solution Approach
A simple approach t o solve the problem is by using hashing, we will use a hash table to count all members and their count. We will traverse all ranges and store count in the hash table, then we will find the maximum count.
Another approach to solve the problem in linear time is using a range array. In this array, we will update the index of all start values of range by adding 1 and all end values of range by subtracting 1 from it. The will find prefix sum and find the maximum prefix sum value.
Example
Program to illustrate the working of our solution
#include <bits/stdc++.h> #define MAX 1000000 using namespace std; int findMaxOccrEle(int L[], int R[], int n){ int occurenceConut[MAX]; memset(occurenceConut, 0, sizeof occurenceConut); int maxi = -1; for (int i = 0; i < n; i++) { occurenceConut[L[i]] += 1; occurenceConut[R[i] + 1]; if(R[i]>maxi){ maxi=R[i]; } } int prefSum = occurenceConut[0],maxEleIndex; for (int i = 1; i < maxi+1; i++) { occurenceConut[i] += occurenceConut[i - 1]; if (prefSum < occurenceConut[i]) { prefSum = occurenceConut[i]; maxEleIndex = i; } } return maxEleIndex; } int main(){ int L[] = { 1, 2, 3 }; int R[] = { 3, 6, 4 }; int n = sizeof(L) / sizeof(L[0]); cout<<"The maximum occurred integer in the range is "<<findMaxOccrEle(L, R, n); return 0; }
Output
The maximum occurred integer in the range is 3