Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में दो लिंक्ड लिस्ट का प्रतिच्छेदन


मान लीजिए हमारे पास दो लिंक्ड लिस्ट A और B हैं, इन लिंक्ड लिस्ट में कुछ तत्व हैं। हमें प्रतिच्छेदन बिंदुओं का संदर्भ वापस करना है। इनपुट हैं intersectionVal = 8, A = [4,1,8,4,5], B = [5,0,1,8,4,5], skipA = 2 और skipB = 3, इनका उपयोग A से 2 तत्वों को छोड़ने और B से 3 तत्वों को छोड़ने के लिए किया जाता है।

हल करने के चरण

  • d नामक एक मैप परिभाषित करें
  • जब तक headA null नहीं है
    • d[headA] := 1
    • headA := headA का अगला
  • जब तक headB null नहीं है
    • यदि headB d में है
      • headB वापस करें
    • headB := headB का अगला
  • Null वापस करें

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

class ListNode:
    def __init__(self, data, next = None):
        self.data = data
        self.next = next

class Solution(object):
    def getIntersectionNode(self, headA, headB):
        """
        :type head1, head1: ListNode
        :rtype: ListNode
        """
        dict = {}
        while headA:
            dict[headA]=1
            headA = headA.next
        while headB:
            if headB in dict:
                return headB
            headB = headB.next
        return None

headA = ListNode(4)
headB = ListNode(5)
Intersect = ListNode(8, ListNode(4, ListNode(5)))
headA.next = ListNode(1, Intersect)
headB.next = ListNode(0, ListNode(1, Intersect))
ob1 = Solution()
op = ob1.getIntersectionNode(headA, headB)
print("Intersection:",op.data)

इनपुट

headA = ListNode(4) headB = ListNode(5) Intersect = ListNode(8, ListNode(4, ListNode(5))) headA.next = ListNode(1, Intersect) headB.next = ListNode(0, ListNode(1, Intersect))

आउटपुट

Intersected at '8'

  1. C++ में दो लिंक्ड लिस्ट का इंटरसेक्शन C++ में दो लिंक्ड लिस्ट का इंटरसेक्शन

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड के दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरा ब्लॉक अगले फील्ड का पता रखता है। मान लीजिए हमारे पास एक लिंक्ड लिस्ट है जैसे कि प्रत्येक नोड में एक रैंडम पॉइंटर होता है जो लिस्ट में अन्य नोड्स की ओर इंगित करता है।

  1. जावा में दो लिंक्ड सूचियों का इंटरसेक्शन पॉइंट खोजें जावा में दो लिंक्ड सूचियों का इंटरसेक्शन पॉइंट खोजें

    एक लिंक्ड सूची एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड के दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरे ब्लॉक में अगले फील्ड का पता होता है।आइए मान लें कि हमारे पास एक लिंक्ड सूची है जैसे कि प्रत्येक नोड में एक रैंडम पॉइंटर होता है जो सूची में अन्य नोड्स की ओर इशारा

  1. Python से लिंक्ड लिस्ट के रूप में दिए गए दो पॉलीनोमियल्स को कैसे जोड़ें? Python से लिंक्ड लिस्ट के रूप में दिए गए दो पॉलीनोमियल्स को कैसे जोड़ें?

    पावर के अनुसार सॉर्टेड लिंक्ड लिस्ट पॉलीनोमियल्स को मर्ज-जैसे एल्गोरिदम से जोड़ें: समान पावर के कोएफिशिएंट्स जोड़ें। एल्गोरिदम डमी नोड और करंट नोड इनिशियलाइज़ करें। जब तक दोनों लिस्ट्स खाली नहीं: पावर कंपेयर करें। poly2.power: poly1 नोड अटैच करें। poly1.power < poly2.power: poly2 नोड अटैच करें। सम