ধরুন আমাদের দুটি লিঙ্কযুক্ত তালিকা রয়েছে যথাক্রমে m এবং n দৈর্ঘ্যের L1 এবং L2, আমাদেরও দুটি অবস্থান a এবং b আছে। আমাদেরকে L1 থেকে a-th নোড থেকে b-th নোডে নোডগুলি সরাতে হবে এবং L2 এর মধ্যে মার্জ করতে হবে৷
সুতরাং, যদি ইনপুট হয় L1 =[1,5,6,7,1,6,3,9,12] L2 =[5,7,1,6] a =3 b =6, তাহলে আউটপুট হবে হতে [1, 5, 6, 5, 7, 1, 6, 9, 12]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- head2 :=L2, temp :=L2
- যখন temp-এর পরবর্তী নোড থাকে, do
- temp :=temp-এর পরবর্তী
- tail2 :=temp
- গণনা :=0
- তাপ :=L1
- end1 :=null, start3 :=null
- যখন temp নাল না হয়, do
- যদি গণনা a-1 এর সমান হয়, তাহলে
- end1 :=temp
- যদি গণনা b+1 এর মত হয়, তাহলে
- start3 :=temp
- লুপ থেকে বেরিয়ে আসুন
- temp :=temp-এর পরবর্তী
- গণনা :=গণনা + 1
- যদি গণনা a-1 এর সমান হয়, তাহলে
- end1 এর পরের :=head2
- tail2 এর পরের :=start3
- L1 ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
ক্লাস লিস্টনোড: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(L1, L2, a, b):head2 =temp =L2 যখন temp.next:temp =temp.next tail2 =temp কাউন্ট =0 temp =L1 end1, start3 =None, None while temp:if count ==a-1:end1 =temp if count ==b+1:start3 =temp break temp =temp.next count +=1 end1.next =head2 tail2.next =start3 return L1L1 =[1,5,6,7,1,6,3,9,12]L2 =[5,7,1,6]a =3b =6print_list(solve(make_list) L1), make_list(L2), a, b))
ইনপুট
<প্রে>[1,5,6,7,1,6,3,9,12], [5,7,1,6], 3, 6আউটপুট
[1, 5, 6, 5, 7, 1, 6, 9, 12, ]