# GeeksforGeeks

A computer science portal for geeks

## data structures : amazon

Home Forums Interview Questions data structures : amazon

This topic contains 16 replies, has 6 voices, and was last updated by  atul007 3 years, 2 months ago.

Viewing 17 posts - 1 through 17 (of 17 total)
• Author
Posts
• #86139

abzx12@gmail.com
Participant

Given numbers 1 to 1000, suggest a data structure to store them such that following operations can be executed in constant time:

1- insertion,

2- deletion,

3- searching,

4- get_any_number (means return any number if present in the data-structure otherwise return -1).

NOTE: Numbers are unique in the data structure.

#111563

kartik
Moderator

A binary map of size 1000.

bool map[1000]

To insert an element, do map = true

To delete an element, do map = false

Search(i): return map

get_any_number() would be similar to Search()

#111564

abzx12@gmail.com
Participant

get_any_number() wont be similar to Search() , if you follow it has to follow an upper bound of ‘n’ i.e. O(n).

#111565

kartik
Moderator

Could you please clarify the meaning get_any_number() . What are the input parameters and what is the expected output for this function?

#111566

abzx12@gmail.com
Participant

lets assume we have numbers 1,2,5 in the data structure.. if we call get_any_number() it should return any out of 1,2 or 5 , Now lets delete 2 , and again we call get_any_number() and it should now return any out of 1 or 5. That’s it.

#111567

kartik
Moderator

You can create two more arrays say next[] and prev[] of same size. The next array will contain index of next available number in map[] and the prev array will contain index of previous available number in map[] . A variable last is also needed that keeps track of last inserted number.

To insert an element, do following

map = true,

next[last] = i,

prev = last

last = i

To delete an element, do following

map = false,

next[prev] = next,

prev[next] = prev

if(last == i)

{

last = prev

}

Search(i): return map

get_any_number() : return last

#111568

kartik
Moderator

Basically, it is kind of array implementation of Doubly Linked List.

#111569

abzx12@gmail.com
Participant

#111570

abbie
Participant

bool map[1000] is kind of a array implementation…

can you please elaborate get_any_number() in a pseudocode

i dont understand the second concept which is somewhat like doubly linked list

#111571

kartik
Moderator

A variable last is used to keep track of the last inserted number. If a delete operation happens such that it deletes the last element, we update the last to prev of the last. Since get_any_number() is supposed to return any number in the set, we always return last number. When we insert an element, we update last to contain the new index.

#111572

abzx12@gmail.com
Participant

what if delete operation deletes any old number(not last) , would delete be O(1) anymore? Anyways may be i am not catching up with the solution, can you please elaborate the approach? How can we make deletion of a particular element from doubly linked list taking constant time?

#111573

kartik
Moderator

@abzx12: Take a closer look at the delete operation, it changes last only if the element to be deleted is the last element.

Given a pointer to the node to be deleted, it always takes constant time to delete the node in doubly linked list. All you need to do is change some pointers.

Probably, I will publish this as a post with complete code.

#111574

abzx12@gmail.com
Participant

@kartik : Nice solution and application of doubly linked list.

I guess we can also use TRIE as its solution, it supports all operations in constant time. Can you please throw some light on such a solution?

#111575

vijay_kansal
Participant

get_random_number is not implemented in this doubly linked list soln. effectively as it will always return the last element inserted that is not yet deleted.

#111576

abzx12@gmail.com
Participant

Although that wasn’t a requirement in constant time, still get_random_number() can be solved in O(n) time with doubly linked list.

#111577

jagannath_das
Participant

@abzx12:How trie?Can You give more insight?

#111578

atul007
Participant

why taking so much pain in implementing using array ,