मान लीजिए हमारे पास कुछ सूचियां हैं, इन सूचियों को क्रमबद्ध किया गया है। हमें इन सूचियों को एक सूची में मिलाना होगा। इसे हल करने के लिए, हम हीप डेटा संरचना का उपयोग करेंगे। इसलिए यदि सूचियां [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 डालें
- यदि कॉलम <सूचियों का आकार [पंक्ति] -1, तो
- सूचियां डालें[पंक्ति, कॉलम + 1], पंक्ति, कॉलम + 1 को ढेर में डालें
- रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
import heapq class Solution: def solve(self, lists): n = len(lists) heap = [] for i, row in enumerate(lists): if row: heapq.heappush(heap, (row[0], i, 0)) res = [] while heap: num, row, col = heapq.heappop(heap) res.append(num) if col < len(lists[row]) - 1: heapq.heappush(heap, (lists[row][col + 1], row, col + 1)) return res ob = Solution() lists = [[],[],[11, 13],[],[4, 4, 14],[4],[11],[1, 8]] print(ob.solve(lists))
इनपुट
[[],[],[11, 13],[],[4, 4, 14],[4],[11],[1, 8]]
आउटपुट
[1, 4, 4, 4, 8, 11, 11, 13, 14]