ধরুন আমাদের কিছু তালিকা আছে, এই তালিকাগুলো সাজানো হয়েছে। আমাদের এই তালিকাগুলিকে একটি তালিকায় একত্রিত করতে হবে। এটি সমাধান করার জন্য, আমরা হিপ ডেটা স্ট্রাকচার ব্যবহার করব। তাই যদি তালিকাগুলো হয় [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]