मैंने हाल ही में इस जावास्क्रिप्ट कोड को StackOverflow पर दो सरणियों के विलय , और डुप्लिकेट को हटाने के लिए देखा:
Array.prototype.unique = function() {
var a = this.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i] === a[j])
a.splice(j--, 1);
}
}
return a;
};
var array1 = ["Vijendra","Singh"];
var array2 = ["Singh", "Shakya"];
var array3 = array1.concat(array2).unique();
जबकि यह कोड काम करता है, यह बहुत ही अयोग्य ( O(n^2)
) है। आपकी चुनौती कम जटिलता के साथ एक एल्गोरिथ्म बनाने की है।
जीतने के मापदंड कम से कम जटिलता के साथ समाधान है , लेकिन पात्रों में सबसे कम लंबाई से संबंधों को तोड़ दिया जाएगा।
आवश्यकताएँ :
किसी फ़ंक्शन में अपने सभी कोड को एक साथ पैकेज करें जो "शुद्धता:" के लिए निम्नलिखित आवश्यकताओं को पूरा करता है।
- इनपुट: दो सरणियाँ
- आउटपुट: एक सरणी
- दोनों सरणियों के तत्वों को एक साथ जोड़ता है- इनपुट ऐरे में कोई भी तत्व आउटपुटेड ऐरे में होना चाहिए।
- आउटपुट सरणी में कोई डुप्लिकेट नहीं होना चाहिए।
- आदेश कोई फर्क नहीं पड़ता (मूल के विपरीत)
- कोई भी भाषा मायने रखती है
- विशिष्टता का पता लगाने या सेट / सरणियों का पता लगाने के लिए मानक लाइब्रेरी के सरणी फ़ंक्शंस का उपयोग न करें (हालांकि मानक लाइब्रेरी से अन्य चीजें ठीक हैं)। मुझे इस बात से अवगत कराएं कि ऐरे का कॉन्सेप्ट ठीक है, लेकिन फ़ंक्शंस जो पहले से ही उपरोक्त सभी करते हैं, वे नहीं हैं।
[1, 2, 2, 3]
और [2, 3, 4]
वापस लौटना चाहिए [1, 2, 2, 3, 4]
या [1, 2, 3, 4]
?