একটি লিংকড লিস্ট, এবং দুটি পূর্ণসংখ্যা m, n দেওয়া আছে। প্রথম m নোড রাখে পরের n নোড ডিলিট করতে হবে। এই প্রক্রিয়া লিস্ট শেষ পর্যন্ত চলবে।
সমস্যা বিবরণ
ইনপুট: elements = [1,2,3,4,5,6,7,8], m = 3, n = 1
আউটপুট: [1,2,3,5,6,7] (প্রতি ৩ নোডের পর ১ নোড ডিলিট)۔
সমাধানের ধাপসমূহ
prev = curr = head,q = 0।currনাল না হলে লুপ চালান:q += 1।- যদি
q == mহয়:- n বার
curr = curr.next(যদি থাকে)। prev.next = curr.next।q = 0।
- n বার
prev = prev.next,curr = curr.next।
headরিটার্ন করুন।
পাইথন উদাহরণ
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
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(']')
def solve(head, m, n):
prev = curr = head
q = 0
while curr:
q += 1
if q == m:
for _ in range(n):
if curr.next is not None:
curr = curr.next
prev.next = curr.next
q = 0
prev = prev.next
curr = curr.next
return head
head = make_list([1,2,3,4,5,6,7,8])
res = solve(head, 3, 1)
print_list(res) # আউটপুট: [1, 2, 3, 5, 6, 7, ]
ইনপুট
[1, 2, 3, 4, 5, 6, 7, 8], 3, 1
আউটপুট
[1, 2, 3, 5, 6, 7,]