यह अलग अलग तरीकों से किया जा सकता है:
1 - ब्रूट बल: array1 में प्रत्येक तत्व के लिए जाँच करें कि तत्व array2 में मौजूद है। ध्यान दें कि इसे स्थिति/अनुक्रमणिका को नोट करने की आवश्यकता होगी ताकि डुप्लीकेट को ठीक से संभाला जा सके। इसके लिए ओ (एन^2) की आवश्यकता बहुत जटिल कोड के साथ है, इसके बारे में भी सोचें ...
2 - दोनों सूचियों को क्रमबद्ध करें, फिर प्रत्येक तत्व को यह देखने के लिए जांचें कि वे समान हैं या नहीं। ओ (एन लॉग एन) सॉर्टिंग के लिए और ओ (एन) मूल रूप से ओ (एन लॉग एन) की जांच करने के लिए, सरणी को गड़बड़ करने में कोई समस्या नहीं है, अगर आपको 2 एन आकार की स्मृति की आवश्यकता नहीं है, तो क्रम में किया जा सकता है क्रमबद्ध सूची की प्रतिलिपि बनाने के लिए।
3 - आइटम जोड़ें और एक सरणी से हैशटेबल में गिनें, फिर अन्य सरणी के माध्यम से पुनरावृत्ति करें, यह जांचें कि प्रत्येक आइटम हैशटेबल में है और उस स्थिति में कमी की गणना अगर यह शून्य नहीं है अन्यथा इसे हैशटेबल से हटा दें। हे (एन) हैशटेबल बनाने के लिए, और ओ (एन) हैशटेबल में अन्य सरणी आइटमों की जांच करने के लिए, इसलिए ओ (एन)। यह एन तत्वों के लिए सबसे अधिक स्मृति के साथ एक हैशटेबल पेश करता है।
4 - बेस्ट ऑफ बेस्ट (उपरोक्त में): दो सरणी के उसी इंडेक्स में प्रत्येक तत्व का घटाएं या अंतर लें और आखिरकार घटाए गए मानों को जोड़ दें। उदाहरण के लिए ए 1 = {1,2,3}, ए 2 = {3,1,2} डिफ = {- 2,1,1} अब डिफ = 0 का योग करें जिसका अर्थ है कि उनके पास पूर्णांक का एक ही सेट है। इस दृष्टिकोण के लिए एक ओ (एन) की आवश्यकता नहीं है जिसमें कोई अतिरिक्त स्मृति नहीं है। एक सी # कोड के रूप में इस तरह दिखेगा:
public static bool ArrayEqual(int[] list1, int[] list2)
{
if (list1 == null || list2 == null)
{
throw new Exception("Invalid input");
}
if (list1.Length != list2.Length)
{
return false;
}
int diff = 0;
for (int i = 0; i < list1.Length; i++)
{
diff += list1[i] - list2[i];
}
return (diff == 0);
}
4 बिल्कुल काम नहीं करता है, यह सबसे खराब
स्रोत
2008-12-17 01:04:08
क्यों इसे एक पायदान नहीं लाती है, और देखें कि क्या होता है यदि हम सॉर्ट नहीं कर सकते हैं। जाहिर है हमें समानता की तुलना करने में सक्षम होना चाहिए। – Hugo
लगता है जैसे आप – naumcho
हाँ की तुलना करने के तरीके से पूछ रहे हैं, यह सही है .. – nickf