Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

completed #20

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions HashSet.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
class ListNode:
def __init__(self, key, val):
self.key = key
self.val = val
self.next = None


class MyHashSet(object):

def __init__(self):
self.size = 1000
self.hash = [None]*self.size
"""
Initialize your data structure here.
"""


def add(self, key):
index = key%self.size
#If the node at given index is None then set it with given key
if self.hash[index] == None:
self.hash[index] = ListNode(key,True)
else:
currNode = self.hash[index]
#If there are nodes at given index then traverse the linked-list and attach the key at the end.
tempHead = currNode
self.hash[index] = ListNode(key,True)
self.hash[index].next = currNode
"""
:type key: int
:rtype: None
"""


def remove(self, key):
index = key%self.size
#If node at given index is None then do nothing.
if self.hash[index] == None:
return
#Otherwise find given key in the linked-list at current index and set its value to False.
else:
currNode = self.hash[index]
while currNode:
if currNode.key == key:
currNode.val = False
break
currNode = currNode.next
"""
:type key: int
:rtype: None
"""


def contains(self, key):
index = key%self.size
#If there's no linked-list at given index then return False.
if self.hash[index] == None:
return False
#Otherwise traverse the linked-list to check if the desired element is present and its value is True.
else:
currNode = self.hash[index]
while currNode:
if currNode.key == key:
if currNode.val == True:
return True
else:
return False
currNode = currNode.next
return False

"""
Returns true if this set contains the specified element
:type key: int
:rtype: bool
"""
53 changes: 53 additions & 0 deletions queues.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
class MyQueue(object):

def __init__(self):
self.queue = []

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can do this using 2 queues as well
although this is also write way of doing this!!

"""
Initialize your data structure here.
"""


def push(self, x):
self.queue.append(x)
"""
Push element x to the back of queue.
:type x: int
:rtype: None
"""


def pop(self):
temp = []
while self.queue:
temp.append(self.queue.pop())
pop = temp.pop()
while temp:
self.queue.append(temp.pop())
return pop
"""
Removes the element from in front of queue and returns that element.
:rtype: int
"""


def peek(self):
temp = []
while self.queue:
temp.append(self.queue.pop())
pop = temp[-1]
while temp:
self.queue.append(temp.pop())
return pop

"""
Get the front element.
:rtype: int
"""


def empty(self):
return len(self.queue) == 0
"""
Returns whether the queue is empty.
:rtype: bool
"""