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

पायथन में रन लेंथ एन्कोडेड वैक्टर के डॉट उत्पाद को खोजने का कार्यक्रम

मान लीजिए कि हमारे पास दो सूचियाँ nums1 और nums2 हैं। इन दो सूचियों में से प्रत्येक रन-लेंथ एन्कोडेड रूप में एक वेक्टर का प्रतिनिधित्व कर रही है। तो एक उदाहरण के रूप में, एक वेक्टर [1, 1, 1, 2, 2, 2, 2] को [3, 1, 4, 2] के रूप में दर्शाया गया है। (क्योंकि 3 वाले और 4 दो हैं)। तो हमें इन दो वैक्टरों का डॉट उत्पाद खोजना होगा। (डॉट उत्पाद दो वैक्टर में मौजूद वस्तुओं के तत्ववार गुणन का योग है)।

इसलिए, यदि इनपुट nums1 =[2, 7, 5, 3] nums2 =[3, 5, 4, 2] जैसा है, तो आउटपुट 109 होगा, क्योंकि वैक्टर [7, 7, 3, 3 की तरह हैं। , 3, 3, 3] • [5, 5, 5, 2, 2, 2, 2] =7*5 + 7*5 + 3*5 + 3*2 + 3*2 + 3*2 + 3* 2 =35 + 35 + 15 + 6 + 6 + 6 + 6 =109.

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • उत्तर:=0
  • जबकि nums1 और nums2 दोनों खाली नहीं हैं, करें
    • val1:=nums1 से अंतिम तत्व और अंतिम आइटम हटाएं
    • गिनती1:=nums1 से अंतिम तत्व और अंतिम आइटम हटाएं
    • val2:=nums2 से अंतिम तत्व और अंतिम आइटम हटाएं
    • गिनती2:=nums2 से अंतिम तत्व और अंतिम आइटम हटाएं
    • उत्तर:=उत्तर + (val1 * val2) * (न्यूनतम गिनती2 और गिनती1)
    • अगर गिनती2>गिनती1, तो
      • डालें |गिनती2 - गिनती1| nums2 के अंत में
      • nums2 के अंत में val2 डालें
    • अन्यथा जब गिनती1>गिनती2, तब
      • डालें |गिनती2 - गिनती1| nums1 के अंत में
      • nums1 के अंत में val1 डालें
  • वापसी उत्तर

उदाहरण

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

def solve(nums1, nums2):
   ans = 0

   while nums1 and nums2:
      val1 = nums1.pop()
      count1 = nums1.pop()
      val2 = nums2.pop()
      count2 = nums2.pop()

      ans += (val1 * val2) * min(count2, count1)

      if count2 > count1:
         nums2.append(abs(count2 - count1))
         nums2.append(val2)
      elif count1 > count2:
         nums1.append(abs(count2 - count1))
         nums1.append(val1)

   return ans

nums1 = [2, 7, 5, 3]
nums2 = [3, 5, 4, 2]
print(solve(nums1, nums2))

इनपुट

[2, 7, 5, 3], [3, 5, 4, 2]

आउटपुट

109

  1. पायथन में कम से कम चक्र लंबाई होल्डिंग लक्ष्य खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक निर्देशित ग्राफ की आसन्नता सूची है, जहां सूचकांक i पर प्रत्येक सूची नोड i से जुड़े नोड्स का प्रतिनिधित्व करती है। हमारे पास एक लक्ष्य मूल्य भी है। हमें लक्ष्य वाले सबसे छोटे चक्र की लंबाई ज्ञात करनी है। अगर कोई समाधान नहीं है तो वापसी -1. तो, अगर इनपुट पसंद है 0 है, लेक

  1. पायथन में गैर-साझा शब्दों की अधिकतम लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास शब्दों नामक लोअरकेस वर्णानुक्रम की एक सूची है, हमें दो अलग-अलग शब्दों की लंबाई का अधिकतम योग खोजना होगा जो एक सामान्य अक्षर साझा नहीं करते हैं। इसलिए, यदि इनपुट शब्दों की तरह है =[abcd, mno , abdcmno, amno], तो आउटपुट 7 होगा, क्योंकि शब्द साझा नहीं करते हैं कोई भी सामान्य अक्ष

  1. पायथन में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई का पता लगाना है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। इसलिए यदि स्ट्रिंग BABAC है, तो सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग BAB है। और लंबाई 3 है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -