मान लीजिए कि हमारे पास दो सूचियाँ 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