Propose a data structure for the following:
The data structure would hold elements from 0 to n-1. There is no order on the elements (no ascending/descending order requirement)
The complexity of the operations should be as follows:
- Insertion of an element – O(1)
- Deletion of an element – O(1)
- Finding an element – O(1)
We strongly recommend to minimize the browser and try this yourself first.
A boolean array works here. Array will have value ‘true’ at ith index if i is present, and ‘false’ if absent.
Initialization:
We create an array of size n and initialize all elements as absent.
C++
void initialize( int n)
{
bool A[n];
for ( int i = 0; i < n; i++)
A[i] = false ;
}
|
C
void initialize( int n)
{
bool A[n];
for ( int i = 0; i<n; i++)
A[i] = {0};
}
|
Java
void initialize( int n)
{
boolean A[n];
for ( int i = 0 ; i<n; i++)
A[i] = false ;
}
|
Python3
def initialize(n):
A = [ False ] * n
|
C#
void initialize( int n)
{
bool [] A = new bool [n];
for ( int i = 0; i < n; i++)
A[i] = false ;
}
|
Javascript
function initialize(n) {
let A = new Array(n);
for (let i = 0; i < n; i++) {
A[i] = false ;
}
}
|
Insertion of an element:
C
void insert(unsigned i)
{
A[i] = 1;
}
|
C++
void insert( int i)
{
A[i] = true ;
}
|
Java
void insert( int i)
{
A[i] = true ;
}
|
Python3
def insert(i):
A[i] = True
|
C#
void insert( int i)
{
A[i] = true ;
}
|
Javascript
void insert(unsigned i)
{
A[i] = true ;
}
|
Deletion of an element:
C++
void delete ( int i)
{
A[i] = false ;
}
|
C
void delete (unsigned i)
{
A[i] = 0;
}
|
Java
void delete( int i)
{
A[i] = false ;
}
|
Python3
def delete(i):
A[i] = False
|
C#
void delete( int i)
{
A[i] = false ;
}
|
Javascript
function delete (i) {
A[i] = false ;
}
|
Finding an element:
C++
bool Find( int i)
{
return A[i];
}
|
C
bool find(unsigned i)
{
return A[i];
}
|
Java
boolean find( int i)
{
return A[i];
}
|
C#
bool Find( int i)
{
return A[i];
}
|
Javascript
function find(i) {
return A[i] ? true : false ;
}
|
Python3
As an exercise, change the data structure so that it holds values from 1 to n instead of 0 to n-1.
Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!