यह 2017 Google एपीएसी से एक प्रश्न है। Problem D: Sum of Sumsubarrays की एक सरणी का योग खोजें
ऐलिस एन धनात्मक पूर्णांक की एक सरणी, 1 से एन वह प्रपत्र के कई प्रश्नों के साथ बॉब चुनौती दी करने के लिए अनुक्रमित के साथ उसके दोस्त बॉब प्रस्तुत "एक के इंडेक्स के बीच संख्याओं का योग क्या है?" लेकिन बॉब समस्या को आसानी से हल करने में सक्षम था। एलिस ने अपनी सरणी ली और उसे सभी एन * (एन + 1)/2 गैर खाली खाली उपरोक्त पाया। उसे प्रत्येक उपराष्ट्रय का योग मिला, और फिर 1 से एन * (एन + 1)/2 से अनुक्रमित एक नई सरणी बनाने के लिए उन मानों को (nondecreasing आदेश में) क्रमबद्ध किया। उदाहरण के लिए, प्रारंभिक सरणी [2, 3, 2] के लिए, ऐलिस उपन्यास [2], [3], [2], [2, 3], [3, 2], और [2, 3, 2] (ध्यान दें कि [2, 2], उदाहरण के लिए, एक उपन्यास नहीं है)। फिर वह रकम लेती है - 2, 3, 2, 5, 5, 7 - और उन्हें [2, 2, 3, 5, 5, 7] की एक नई सरणी प्राप्त करने के लिए क्रमबद्ध करें .इसिस ने प्रारंभिक दिया है फॉर्म के क्यू प्रश्नों के साथ बॉब के लिए सरणी "इंडेक्स ली से री, समेकित, नई सरणी में संख्याओं का योग क्या है?" अब बॉब परेशानी में है! क्या आप उसकी मदद कर सकते हैं?
सीधे डेटा समाधान बड़े डेटा सेट के लिए सी ++ में भी अक्षम है। क्या इसे हल करने का एक और अधिक प्रभावी तरीका है?
multiset<int> sums;
long long int temp = 0;
for (long long int len = 1; len <= n; ++len)
{
for (int start = 0; start+len <= n; ++start)
{
temp = 0;
for (int i = 0; i < len; ++i)
{
temp += arr[start + i]; //arr stores the original array of n digits
}
sums.insert(temp);
}
}
पी.एस:
वर्तमान में मैं अंतिम सरणी के निर्माण के लिए पाश के लिए इस के माध्यम से जा रहा हूँ है मेरे वर्तमान कार्यान्वयन O (n^5)?
मेरी गलती, मैं देख सकता हूं कि यह ओ (एन^3) अब कैसे है। धन्यवाद संपादित करें: उत्तर अब तक सहायक रहे हैं लेकिन एन = 200000 वस्तुओं से जुड़े बड़े डेटासेट के साथ, ऐसा लगता है कि उपरोक्त की पूरी सरणी की गणना करने वाला कोई भी समाधान बहुत महंगा है। सभी सबमिट किए गए समाधान subarrays की पूरी सरणी की गणना करने के लिए प्रकट नहीं होते हैं
कैसे आप हे के साथ आते हैं (एन^5)? मैं केवल 3 loops – user463035818
देखता हूं मुझे नहीं पता कि 'ओ (एन^5)' से आपका क्या मतलब है, लेकिन सरल समाधान 'ओ (टी * क्यू * एन^2 * लॉगएन)' में चलाया जाएगा। –
अपने कोड के अनुसार। सरल अनुकूलन यह है कि आप उपसर्ग सारांशों को पूर्ववत कर सकते हैं और O (1) में उप-राशि की गणना कर सकते हैं। –