Skip to content
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
11 changes: 5 additions & 6 deletions BFS/python/bfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,18 @@ def addEdge(self, u, v):
self.graph[u].append(v)

def BFS(self, node):
queue = []
queue.append(node)
queue = [node]
self.visited[node] = True

while queue:
currentNode = queue.pop(0)
print(currentNode)

children = self.graph[currentNode]
for i in range(len(children)):
if not self.visited[children[i]]:
queue.append(children[i])
self.visited[children[i]] = True
for child in children:
if not self.visited[child]:
queue.append(child)
self.visited[child] = True


if __name__ == '__main__':
Expand Down
108 changes: 55 additions & 53 deletions BST/python/BinarySearchTree.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,69 +23,71 @@ def isEmpty(self):
return self._size == 0

def populateTree(self):
for i in range(len(self.arr)):
self.insert(self.arr[i])
for item in self.arr:
self.insert(item)

def insert(self, value):
if type(value) == self._dataType:
itemNum = self._size
newNode = Node(value, type(value), itemNum, None, None, None)
if (self._root is None):
self._root = newNode
self._size += 1
return
if type(value) != self._dataType:
return
itemNum = self._size
newNode = Node(value, type(value), itemNum, None, None, None)
if (self._root is None):
self._root = newNode
self._size += 1
return

pointer = self._root
currentVal = pointer.getData()
while True:
if value < currentVal:
if pointer.getLeft() is None:
newNode.setParent(pointer)
pointer.setLeft(newNode)
self._size += 1
return
else:
pointer = pointer.getLeft()
currentVal = pointer.getData()

pointer = self._root
currentVal = pointer.getData()
while True:
if value < currentVal:
if pointer.getLeft() is None:
newNode.setParent(pointer)
pointer.setLeft(newNode)
self._size += 1
return
else:
pointer = pointer.getLeft()
currentVal = pointer.getData()

elif value > currentVal:
if pointer.getRight() is None:
newNode.setParent(pointer)
pointer.setRight(newNode)
self._size += 1
return
else:
pointer = pointer.getRight()
currentVal = pointer.getData()

elif value == currentVal:
print("Value already exists in BST.")
elif value > currentVal:
if pointer.getRight() is None:
newNode.setParent(pointer)
pointer.setRight(newNode)
self._size += 1
return
else:
pointer = pointer.getRight()
currentVal = pointer.getData()

elif value == currentVal:
print("Value already exists in BST.")
return

def search(self, value):
if type(value) == self._dataType:
if (self._root is None):
return False
if type(value) != self._dataType:
return
if (self._root is None):
return False

pointer = self._root
currentVal = pointer.getData()
while True:
if value < currentVal:
if pointer.getLeft() is None:
return False
pointer = self._root
currentVal = pointer.getData()
while True:
if value < currentVal:
if pointer.getLeft() is None:
return False

pointer = pointer.getLeft()
currentVal = pointer.getData()
pointer = pointer.getLeft()
currentVal = pointer.getData()

elif value > currentVal:
if pointer.getRight() is None:
return False
elif value > currentVal:
if pointer.getRight() is None:
return False

pointer = pointer.getRight()
currentVal = pointer.getData()
pointer = pointer.getRight()
currentVal = pointer.getData()

elif value == currentVal:
return pointer.getItemNum()
elif value == currentVal:
return pointer.getItemNum()

def inOrderTraversal(self, node):
if node is not None:
Expand All @@ -94,7 +96,7 @@ def inOrderTraversal(self, node):
self.inOrderTraversal(node.getRight())

def getSorted(self):
self.sorted = list()
self.sorted = []
self.inOrderTraversal(self._root)
return self.sorted

Expand Down
10 changes: 3 additions & 7 deletions BackTracking/Hamilton Path/hamilton.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,11 @@ def isSafe(self, v, pos, path):
def hamCycleUtil(self, path, pos):

# base case: if all vertices are
# included in the path
# included in the path
if pos == self.V:
# Last vertex must be adjacent to the
# first vertex in path to make a cyle
if self.graph[path[pos - 1]][path[0]] == 1:
return True
else:
return False

# first vertex in path to make a cyle
return self.graph[path[pos - 1]][path[0]] == 1
for v in range(1, self.V):

if self.isSafe(v, pos, path) is True:
Expand Down
4 changes: 1 addition & 3 deletions BackTracking/RatInAMaze/ratmaze.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@ def printSolution(sol):
# A utility function to check if x,y is valid
# index for N*N Maze
def isSafe(maze, x, y):
if x >= 0 and x < N and y >= 0 and y < N and maze[x][y] == 1:
return True
return False
return x >= 0 and x < N and y >= 0 and y < N and maze[x][y] == 1


def solveMaze(maze):
Expand Down
2 changes: 1 addition & 1 deletion BitManipulation/count_ones/count_ones.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ def count_ones(n: int):
while n:
if n & 1:
count += 1
n = n // 2
n //= 2
return count


Expand Down
2 changes: 1 addition & 1 deletion DP/Fibonacci/fibonacci.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# DP Approach for Fibonacci series

ans = dict()
ans = {}


def fibo(i):
Expand Down
7 changes: 2 additions & 5 deletions Graph/DijkstrasSPT/python/Dadjacencylist.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ def __init__(self):
self.pos = []

def newMinHeapNode(self, v, dist):
minHeapNode = [v, dist]
return minHeapNode
return [v, dist]

# A utility function to swap two nodes
# of min heap. Needed for min heapify
Expand Down Expand Up @@ -82,9 +81,7 @@ def decreaseKey(self, v, dist):
# vertex 'v' is in min heap or not
def isInMinHeap(self, v):

if self.pos[v] < self.size:
return True
return False
return self.pos[v] < self.size


def printArr(dist, n):
Expand Down
11 changes: 6 additions & 5 deletions Hashing/3_Sum/threeSum.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
Author: Tushar Nitave
'''


nums = [-1, 0, 1, 2, -1, -4]

hashTable = []
result = [] # result containing duplicate values
finalresult = [] # stores final result without duplicate values

for i in range(0, len(nums) - 2):
for i in range(len(nums) - 2):

for j in range(i + 1, len(nums) - 1):
x = -(nums[i] + nums[j])
Expand All @@ -20,9 +21,9 @@
else:
hashTable.append(nums[j])

for i in range(len(result)):
result[i].sort()
if not result[i] in finalresult:
finalresult.append(result[i])
for item in result:
item.sort()
if item not in finalresult:
finalresult.append(item)

print(finalresult)
5 changes: 1 addition & 4 deletions Math/Prime/python/prime.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@
def is_prime(number):
if (number <= 1):
return False
for i in range(2, 1 + int(math.sqrt(number))):
if (number % i) == 0:
return False
return True
return all(number % i != 0 for i in range(2, 1 + int(math.sqrt(number))))

number = input("Enter a number : ")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ def multiply(a,b):
else:
left = b
right = a

prod = 0

while left > 0: # Loop till you reach 1
if left%2 != 0: # Add the value to product variable if the left column value is odd
prod = prod + right
prod += right

left = left >> 1 # Right shift
right = right << 1 # Left Shift

Expand Down
8 changes: 2 additions & 6 deletions Math/collatz_conjecture/Python/collatz_conjecture.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
def collatz(n):
seq = [n]
while n > 1:
if n%2 == 1:
n = n*3 + 1
seq.append(n)
else:
n = n/2
seq.append(n)
n = n * 3 + 1 if n % 2 == 1 else n / 2
seq.append(n)
return seq

if __name__ == "__main__" :
Expand Down
8 changes: 1 addition & 7 deletions Math/eulers_totient_function/python/eulers_totient.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,4 @@ def gcd(a, b):
return gcd(b % a, a)

def phi(n):
res = 1

for i in range(2, n):
if gcd(i, n) == 1:
res += 1

return res
return 1 + sum(1 for i in range(2, n) if gcd(i, n) == 1)
22 changes: 11 additions & 11 deletions Math/lowest_common_multiple/lcm.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
def lcm(num1, num2):
"""Returns the lowest common multiple of two given integers."""
temp_num = num1
while (temp_num % num2) != 0:
temp_num += num1
return temp_num
if __name__ == "__main__":
print lcm(3, 9) # output is 9
print lcm(24, 36) # output is 72
print lcm(12, 80) # output is 240
def lcm(num1, num2):
"""Returns the lowest common multiple of two given integers."""
temp_num = num1
while (temp_num % num2) != 0:
temp_num += num1
return temp_num

if __name__ == "__main__":
print lcm(3, 9) # output is 9
print lcm(24, 36) # output is 72
print lcm(12, 80) # output is 240
5 changes: 2 additions & 3 deletions NetworkFlow/EdmundKarp/edmund_karp.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@ def EdmondsKarp(E, C, s, t):
P[s] = -2
M = [0 for x in range(n)]
M[s] = decimal.Decimal('Infinity')
BFSq = []
BFSq.append(s)
BFSq = [s]
pathFlow, P = BFSEK(E, C, s, t, F, P, M, BFSq)
if pathFlow == 0:
break
flow = flow + pathFlow
flow += pathFlow
v = t
while v != s:
u = P[v]
Expand Down
4 changes: 1 addition & 3 deletions Search/FibonacciSearch/fibonacci_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,7 @@ def fibonacci_search(arr, x, n):
if __name__ == "__main__":
n = int(input("Enter the number of elements: "))
print("Enter the elements each line")
arr = []
for i in range(n):
arr.append(int(input()))
arr = [int(input()) for _ in range(n)]
x = int(input("Enter element to be searched: "))
idx = fibonacci_search(arr, x, n)
if idx == -1:
Expand Down
6 changes: 2 additions & 4 deletions Search/LinearSearch/linear_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@
@author: KARAN
"""

numbers = []
n = int(input("Enter the total number of elements : "))
for i in range(n):
numbers.append(int(input("Enter a number : ")))

n = int(input("Enter the total number of elements : "))
numbers = [int(input("Enter a number : ")) for _ in range(n)]
key = int(input("Enter the number you wanna find in the list : "))
found = False
for i in range(n):
Expand Down
8 changes: 4 additions & 4 deletions Search/hashing/2_Sum/sum_pair.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
def print_pairs(arr, sum):
s = set()

for i in range(0, len(arr)):
temp = sum - arr[i]
for item in arr:
temp = sum - item
if temp >= 0 and temp in s:
print("Pair with the given sum is", arr[i], "and", temp)
s.add(arr[i])
print("Pair with the given sum is", item, "and", temp)
s.add(item)


if __name__ == "__main__":
Expand Down
Loading