কম্পিউটার

পাইথনে K- সাজানো তালিকাগুলিকে একত্রিত করার জন্য প্রোগ্রাম


ধরুন আমাদের কিছু তালিকা আছে, এই তালিকাগুলো সাজানো হয়েছে। আমাদের এই তালিকাগুলিকে একটি তালিকায় একত্রিত করতে হবে। এটি সমাধান করার জন্য, আমরা হিপ ডেটা স্ট্রাকচার ব্যবহার করব। তাই যদি তালিকাগুলো হয় [1,4,5], [1,3,4], [2,6], তাহলে চূড়ান্ত তালিকা হবে [1,1,2,3,4,4,5,6] .

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • n :=তালিকার আকার
  • গাদা :=একটি নতুন তালিকা
  • প্রতিটি সূচী i এবং তালিকার সারির জন্য[i], করুন
    • যদি সারিটি খালি না হয়, তাহলে
      • ঢোকান (সারি[0], i, 0) হিপে
  • res :=একটি নতুন তালিকা
  • যখন স্তূপ খালি না হয়, কর
    • সংখ্যা, সারি, কল :=স্তূপের শীর্ষ উপাদান
    • res এর শেষে num ঢোকান
    • যদি col <তালিকার আকার [সারি] - 1 হয়, তাহলে
      • তালিকা ঢোকান[সারি, কোল + 1], সারি, কোল + 1 হিপে
  • রিটার্ন রিটার্ন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

ইমপোর্ট heapqclass সমাধান:def solve(self, lists):n =len(lists) heap =[] i এর জন্য, সারিতে গণনা(তালিকা):যদি সারি:heapq.heappush(heap, (row[0]), i, 0)) res =[] যখন heap:num, row, col =heapq.heappop(heap) res.append(num) if col  

ইনপুট

<প্রে>[[],[],[11, 13],[],[4, 4, 14],[4],[11],[1, 8]]

আউটপুট

[1, 4, 4, 4, 8, 11, 11, 13, 14] 

  1. হিপ চেক করার প্রোগ্রামটি পাইথনে সর্বোচ্চ হিপ তৈরি করছে নাকি নয়

  2. মার্জ সাজানোর জন্য পাইথন প্রোগ্রাম

  3. পুনরাবৃত্তিমূলক মার্জ সাজানোর জন্য পাইথন প্রোগ্রাম

  4. হিপ সাজানোর জন্য পাইথন প্রোগ্রাম