ধরুন আমাদের একটি তালিকা L এবং আরেকটি মান k আছে। আমাদের শুরু থেকে kth নোড এবং শেষ থেকে kth নোড অদলবদল করতে হবে এবং শেষে চূড়ান্ত তালিকা ফেরত দিতে হবে।
সুতরাং, যদি ইনপুট হয় L =[1,5,6,7,1,6,3,9,12] k =3, তাহলে আউটপুট হবে [1,5,3,7,1,6, 6,9,12], শুরু থেকে 3য় নোডটি 6 এবং শেষ থেকে 3, তাই সেগুলি অদলবদল করা হয়েছে৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- তাপ :=L
- আমি 0 থেকে k-2 রেঞ্জের জন্য, কর
- temp :=temp-এর পরবর্তী
- firstNode :=temp
- সেকেন্ড নোড :=L
- যখন temp এর পরেরটি null না, do
- secondNode :=secondNode এর পরের
- temp :=temp-এর পরবর্তী
- প্রথম নোডের অদলবদল মান এবং দ্বিতীয় নোডের মান
- প্রত্যাবর্তন এল
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
ক্লাস লিস্টনোড: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. নেক্সট প্রিন্ট(']') def সমাধান(L, k):temp =L i এর জন্য রেঞ্জ (k-1):temp =temp.next firstNode =temp secondNode =L যখন temp.next:secondNode =secondNode.next temp =temp.next firstNode.val , secondNode.val =secondNode.val , firstNode.val ফেরত LL =[1,5,6,7,1,6,3,9 ,12]k =3print_list(solve(make_list(L), k))
ইনপুট
<প্রে>[1,5,6,7,1,6,3,9,12], 3আউটপুট
[1, 5, 3, 7, 1, 6, 6, 9, 12, ]