ধরুন আমাদের একটি এককভাবে লিঙ্ক করা তালিকা আছে, এবং আরেকটি মান k আছে, আমাদের প্রতিটি k সংলগ্ন নোডের গ্রুপকে বিপরীত করতে হবে।
সুতরাং, যদি ইনপুট হয় List =[1,2,3,4,5,6,7,8,9,10], k =3, তাহলে আউটপুট হবে [3, 2, 1, 6, 5 , 4, 9, 8, 7, 10,
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- tmp :=মান 0 সহ একটি নতুন নোড
- tmp :=নোডের পাশে
- পূর্ববর্তী :=নাল, curr :=শূন্য
- lp :=temp, lc :=curr
- cnt :=k
- যদিও curr নাল না হয়, do
- পূর্ববর্তী :=শূন্য
- যদিও cnt> 0 এবং curr নাল নয়, do
- অনুসরণ:=curr এর পরবর্তী
- curr এর পরের :=prev
- পূর্ববর্তী :=curr, curr :=অনুসরণ করে
- cnt :=cnt - 1
- lp এর পরের :=prev, lc এর পরের :=curr
- lp :=lc, lc :=curr
- cnt :=k
- tmp এর পরের রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
ক্লাস লিস্টনোড:def __init__(self, data, next =None):self.val =data self.next =nextdef make_list(elements):head =ListNode(elements[0]) উপাদানের উপাদানের জন্য[1:] :ptr =head while ptr.next:ptr =ptr.next ptr.next =ListNode(element) রিটার্ন headdef print_list(head):ptr =head print('[', end ="") যখন ptr:print(ptr. val, end =", ") ptr =ptr.next print(']') শ্রেণী সমাধান:def solve(self, node, k):tmp =ListNode(0) tmp.next =নোড পূর্ববর্তী, curr =কিছুই নয়, নোড lp, lc =tmp, curr cnt =k যখন curr:prev =None while cnt> 0 এবং curr:নিম্নলিখিত =curr.next curr.next =prev prev, curr =curr, নিম্নলিখিত cnt -=1 lp.next, lc. next =prev, curr lp, lc =lc, curr cnt =k রিটার্ন tmp.nextob =সমাধান()head =make_list([1,2,3,4,5,6,7,8,9,10])print_list (ob.solve(head, 3))
ইনপুট
<প্রে>[1,2,3,4,5,6,7,8,9,10], 3আউটপুট
[3, 2, 1, 6, 5, 4, 9, 8, 7, 10, ]