কম্পিউটার

Python-এ k আকারের গ্রুপ দ্বারা লিঙ্ক করা তালিকাকে বিপরীত করার প্রোগ্রাম


ধরুন আমাদের একটি এককভাবে লিঙ্ক করা তালিকা আছে, এবং আরেকটি মান 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, ]

  1. পাইথনে একটি লিঙ্ক করা তালিকাকে বিপরীত করার জন্য প্রোগ্রাম

  2. পাইথনে লিঙ্কযুক্ত তালিকা বিপরীত করুন

  3. পাইথন প্রোগ্রাম একটি বাক্য প্রতিটি শব্দ বিপরীত?

  4. পাইথন প্রোগ্রাম প্রদত্ত আকারের গ্রুপে একটি অ্যারে বিপরীত করতে?