ASSIGNMENT – 2
1) K – LARGEST ELEMENT IN AN ARRAY
import heapq
class Solution:
def findKthLargest(self, nums, k):
min_heap = []
for num in nums:
[Link](min_heap, num)
if len(min_heap) > k:
[Link](min_heap)
return min_heap[0]
nums1 = [3, 2, 1, 5, 6, 4]
k1 = 2
print(Solution().findKthLargest(nums1, k1))
nums2 = [3, 2, 3, 1, 2, 4, 5, 5, 6]
k2 = 4
print(Solution().findKthLargest(nums2, k2))
OUTPUT:
2)MERGE K SORTED LISTS
import heapq
class ListNode:
def __init__(self, val=0, next=None):
[Link] = val
[Link] = next
def to_list(self):
result = []
current = self
while current:
[Link]([Link])
current = [Link]
return result
class Solution:
def mergeKLists(self, lists):
heap = []
for i, node in enumerate(lists):
if node:
[Link](heap, ([Link], i, node))
dummy = ListNode(0)
current = dummy
while heap:
val, i, node = [Link](heap)
[Link] = node
current = [Link]
if [Link]:
[Link](heap, ([Link], i, [Link]))
return [Link]
def create_linked_list(arr):
dummy = ListNode(0)
current = dummy
for val in arr:
[Link] = ListNode(val)
current = [Link]
return [Link]
lists = [create_linked_list([1, 4, 5]), create_linked_list([1, 3, 4]), create_linked_list([2, 6])]
result = Solution().mergeKLists(lists)
print(result.to_list()) # Output: [1, 1, 2, 3, 4, 4, 5, 6]
OUTPUT:
2) DESIGN CIRCULAR DEQUE
class MyCircularDeque:
def __init__(self, k: int):
self.k = k
[Link] = [0] * k
[Link] = 0
[Link] = 0
[Link] = 0
def insertFront(self, value: int) -> bool:
if [Link]():
return False
[Link] = ([Link] - 1) % self.k
[Link][[Link]] = value
[Link] += 1
return True
def insertLast(self, value: int) -> bool:
if [Link]():
return False
[Link][[Link]] = value
[Link] = ([Link] + 1) % self.k
[Link] += 1
return True
def deleteFront(self) -> bool:
if [Link]():
return False
[Link] = ([Link] + 1) % self.k
[Link] -= 1
return True
def deleteLast(self) -> bool:
if [Link]():
return False
[Link] = ([Link] - 1) % self.k
[Link] -= 1
return True
def getFront(self) -> int:
if [Link]():
return -1
return [Link][[Link]]
def getRear(self) -> int:
if [Link]():
return -1
return [Link][([Link] - 1) % self.k]
def isEmpty(self) -> bool:
return [Link] == 0
def isFull(self) -> bool:
return [Link] == self.k
OUTPUT: