0% found this document useful (0 votes)
29 views5 pages

K Largest Elements and Deque Design

Uploaded by

sadimula
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views5 pages

K Largest Elements and Deque Design

Uploaded by

sadimula
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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:

You might also like