मान लीजिए कि हमारे पास दो सूचियाँ nums1 और nums2 हैं। अब बाधा यह है कि जब हम विलय करते हैं तो प्रत्येक सूची में तत्वों का क्रम नहीं बदलता है, उदाहरण के लिए, यदि तत्व [1,2,3] और [4,5,6] हैं, तो कुछ मान्य मर्ज की गई सूचियां हैं [1, 4,2,3,5,6] और [1,2,3,4,5,6], कुछ अन्य मान्य मर्ज अनुक्रम हो सकते हैं। इसलिए यदि हमारे पास सूचियों का आकार N और M है। हमें वैध सूची प्राप्त करने के लिए उन्हें मर्ज करने के कई तरीके खोजने होंगे। यदि उत्तर बहुत बड़ा है तो रिटर्न परिणाम मॉड्यूलो 10^9 + 7.
इसलिए, यदि इनपुट N =5 M =3 जैसा है, तो आउटपुट 56
. होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- सेवानिवृत्त:=1
- मैं के लिए एन + 1 से एन + एम तक, करते हैं
- ret:=ret * i
- i के लिए 1 से M की सीमा में, करें
- ret :=r/i की मंजिल
- रिटर्न रिट मोड (10^9 + 7)
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(N, M): ret = 1 for i in range(N + 1, N + M + 1): ret *= i for i in range(1, M + 1): ret //= i return ret % (10**9 + 7) N = 5 M = 3 print(solve(N, M))
इनपुट
5, 3
आउटपुट
56