Skip to content

Commit 09d13cd

Browse files
committed
Data structures
1 parent 0e8c865 commit 09d13cd

File tree

6 files changed

+237
-1
lines changed

6 files changed

+237
-1
lines changed

1-100/32.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,24 @@ def longestValidParentheses(self, s):
3030
else:
3131
result = max(result, index-currIndex+1)
3232
return result
33+
34+
35+
# class Solution(object):
36+
# def longestValidParentheses(self, s):
37+
# """
38+
# :type s: str
39+
# :rtype: int
40+
# """
41+
# q = []
42+
# start, ans = 0, 0
43+
# for i in range(len(s)):
44+
# if s[i] == '(':
45+
# q.append(i)
46+
# continue
47+
# if not q:
48+
# start = i + 1
49+
# else:
50+
# q.pop()
51+
# ans = max(ans, i - q[-1] if q else i - start + 1)
52+
# return ans
3353

1-100/37.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,34 @@
1919
The given board contain only digits 1-9 and the character '.'.
2020
You may assume that the given Sudoku puzzle will have a single unique solution.
2121
The given board size is always 9x9.
22-
'''
22+
'''
23+
class Solution(object):
24+
def solveSudoku(self, board):
25+
"""
26+
:type board: List[List[str]]
27+
:rtype: None Do not return anything, modify board in-place instead.
28+
"""
29+
def isValid(x,y):
30+
tmp=board[x][y]; board[x][y]='D'
31+
for i in range(9):
32+
if board[i][y]==tmp: return False
33+
for i in range(9):
34+
if board[x][i]==tmp: return False
35+
for i in range(3):
36+
for j in range(3):
37+
if board[(x/3)*3+i][(y/3)*3+j]==tmp: return False
38+
board[x][y]=tmp
39+
return True
40+
def dfs(board):
41+
for i in range(9):
42+
for j in range(9):
43+
if board[i][j]=='.':
44+
for k in '123456789':
45+
board[i][j]=k
46+
if isValid(i,j) and dfs(board):
47+
return True
48+
board[i][j]='.'
49+
return False
50+
return True
51+
dfs(board)
52+

Data-Structures/Arrays.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import array
2+
arr = array.array('i', [1,2,3])
3+
4+
print("The new array created is: ")
5+
for i in range(0,3):
6+
print(arr[i])
7+
8+
print("\r")
9+
10+
arr.append(4)
11+
12+
print("The appended array is: ")
13+
for i in range(0,4):
14+
print(arr[i])
15+
16+
17+
arr.insert(2,5)
18+
19+
20+
print("The inserted array is: ")
21+
for i in range(0,5):
22+
print(arr[i])

Data-Structures/DLinkedList.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
class Node:
2+
def __init__(self, next=None, prev=None, data= None):
3+
self.next = next
4+
self.prev = prev
5+
self.data = data
6+
7+
class DoublyLinkedList:
8+
def __init__(self):
9+
self.head = None
10+
11+
def insert_at_begin(self, data):
12+
node = Node(data)
13+
node.next = self.head
14+
if self.head:
15+
self.head.prev = node
16+
self.head = node
17+
18+
def insert_after(self, prev_node, data):
19+
if not prev:
20+
print("This node is not present in the list")
21+
return
22+
node = Node(data)
23+
24+
node.next = prev_node.next
25+
prev_node.next = node
26+
node.prev = prev_node
27+
28+
if node.next:
29+
node.next.prev = node
30+
31+
def insert_at_end(self, data):
32+
33+
node = Node(data)
34+
last = self.head
35+
36+
37+
38+
39+

Data-Structures/Linked_List.py

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
class Node:
2+
def __init__(self, data):
3+
self.data = data
4+
self.next = None
5+
6+
class LinkedList:
7+
def __init__(self):
8+
self.head = None
9+
10+
# insert a new node at the beginning
11+
def insert_at_begin(self, data):
12+
new_node = Node(data)
13+
new_node.next = self.head
14+
self.head = new_node
15+
16+
# Inserts a new node after the given prev_node
17+
18+
def insertAfter(self, prev, data):
19+
new_node = Node(data)
20+
21+
if not prev:
22+
print("prev must be in the node")
23+
return
24+
new_node = Node(data)
25+
curr= self.head
26+
while curr:
27+
if curr != prev:
28+
curr = curr.next
29+
new_node.next = prev.next
30+
prev.next = new_node
31+
32+
def insertAtEnd(self, data):
33+
new_node = Node(data)
34+
if not self.head:
35+
self.head = new_node
36+
curr = self.head
37+
while curr.next:
38+
curr = curr.next
39+
self.head.next = new_node
40+
41+
# Given a reference to the head of a list
42+
# and a position, delete the node at a given position
43+
def deleteNode(self, position):
44+
if not self.head:
45+
return
46+
curr = self.head
47+
if position == 0:
48+
self.head = curr.next
49+
curr = None
50+
return
51+
for index in range(position -1):
52+
curr = curr.next
53+
if curr is None:
54+
break
55+
if curr is None:
56+
return
57+
next = curr.next.next
58+
curr.next = None
59+
curr.next = next
60+
61+
62+
# This function prints contents of linked list
63+
# starting from head
64+
def printList(self):
65+
temp = self.head
66+
res = []
67+
while temp:
68+
res.append(temp.data)
69+
temp = temp.next
70+
return res
71+
72+
73+
74+
75+
76+
77+
78+
79+
80+
81+
82+
83+
# Start with the empty list
84+
85+
86+
llist = LinkedList()
87+
llist.insert_at_begin(6)
88+
llist.insert_at_begin(6)
89+
llist.insert_at_begin(1)
90+
llist.insertAtEnd(4)
91+
llist.insertAtEnd(9)
92+
llist.insertAfter(llist.head.next, 8)
93+
llist.printList()
94+
print("Created Linked List: ")
95+
llist.printList()
96+
llist.deleteNode(4)
97+
print ("\nLinked List after Deletion at position 4: ")
98+
llist.printList()

Data-Structures/Quick_Sort.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution:
2+
def partition(self, arr, low, high):
3+
i = (low -1)
4+
pivot = arr[high]
5+
6+
for j in range(low, high):
7+
if arr[j] < pivot:
8+
i = i+1
9+
arr[i],arr[j] = arr[j], arr[i]
10+
arr[i+1], arr[high] = arr[high], arr[i+1]
11+
return (i+1)
12+
13+
def quick_sort(self, arr, low, high):
14+
if low < high:
15+
pi = self.partition(arr, low, high)
16+
self.quick_sort(arr, low, pi -1)
17+
self.quick_sort(arr, pi + 1, high)
18+
19+
20+
21+
22+
arr = [10, 7, 8, 9, 1, 5]
23+
n = len(arr)
24+
Solution().quick_sort(arr,0,n-1)
25+
print ("Sorted array is:")
26+
for i in range(n):
27+
print ("%d \t" %arr[i] + " ")

0 commit comments

Comments
 (0)