মান লক্ষ্য করুন আমাদের কাছে একটি সিংগলি লিংকড লিস্ট এবং একটি target ভ্যালু আছে। আমাদের কাজ হল লিস্ট থেকে target-এর শেষ অকারেন্স (occurrence) মুছে ফেলা।
উদাহরণস্বরূপ, যদি ইনপুট হয় [5,4,2,6,5,2,3,2,4,5,4,7] এবং target = 5, তবে আউটপুট হবে [5, 4, 2, 6, 5, 2, 3, 2, 4, 4, 7, ]।
head := nodek := None,prev := Nonefound := Falsenodeনাল না হওয়া পর্যন্ত লুপ চালান:- যদি
node.val == targetহয়, তবে:found := Trueprev := k
k := nodenode := node.next
- যদি
- যদি
found == Falseহয়, তবেheadরিটার্ন করুন। - যদি
prev is Noneহয়, তবেhead.nextরিটার্ন করুন। prev.next := prev.next.nextheadরিটার্ন করুন।
class ListNode:
def __init__(self, data, next=None):
self.val = data
self.next = next
def make_list(elements):
head = ListNode(elements[0])
for element in elements[1:]:
ptr = head
while ptr.next:
ptr = ptr.next
ptr.next = ListNode(element)
return head
def print_list(head):
ptr = head
print('[', end="")
while ptr:
print(ptr.val, end=", ")
ptr = ptr.next
print(']')
class Solution:
def solve(self, node, target):
head = node
k = None
prev = None
found = False
while node:
if node.val == target:
found = True
prev = k
k = node
node = node.next
if found == False:
return head
if not prev:
return head.next
prev.next = prev.next.next
return head
ob = Solution()
L = make_list([5,4,2,6,5,2,3,2,4,5,4,7])
target = 5
print_list(ob.solve(L, target))
[5,4,2,6,5,2,3,2,4,5,4,7]
[5, 4, 2, 6, 5, 2, 3, 2, 4, 4, 7, ]