Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

दो सरणियों का प्रतिच्छेदन जावास्क्रिप्ट

<घंटा/>

हमारे पास संख्याओं के दो सरणियाँ हैं, और हमें एक फ़ंक्शन लिखने की आवश्यकता है, जैसे कि चौराहा () जो उनके प्रतिच्छेदन की गणना करता है और एक सरणी देता है जिसमें किसी भी क्रम में प्रतिच्छेद करने वाले तत्व होते हैं। परिणाम में प्रत्येक तत्व दोनों सरणियों में जितनी बार दिखाई देता है उतनी बार प्रकट होना चाहिए।

उदाहरण के लिए - अगर,

Input: arr1 = [1,2,3,1], arr2 = [1,3,1]
Output: [1,3,1]

दृष्टिकोण

यदि सरणियों को क्रमबद्ध किया गया होता, तो हम दो सूचक दृष्टिकोण का उपयोग कर सकते थे, जिसमें शुरू में दोनों संबंधित सरणी की शुरुआत 0 की ओर इशारा करते थे और हम संबंधित सूचक को बढ़ाने के साथ आगे बढ़ सकते थे और वह O (m + n) जटिल w.r.t होता। वह समय जहाँ m और n सरणी के आकार हैं।

लेकिन चूंकि हमारे पास बिना क्रमबद्ध सरणियाँ हैं, इसलिए सरणियों को छाँटने में कोई तर्क नहीं है और फिर इस दृष्टिकोण का उपयोग करते हुए, हम दूसरे के विरुद्ध पहले के प्रत्येक मान की जाँच करेंगे और एक प्रतिच्छेदन सरणी का निर्माण करेंगे। इससे हमें O(n^2) समय खर्च होगा।

और ऐसा करने के लिए कोड होगा -

उदाहरण

const arr1 = [1, 2, 43, 5, 3, 7, 7,8, 4, 2];
const arr2 = [1, 1, 6, 6, 2, 78, 7, 2, 3, 7, 23, 5, 3];
const intersection = (arr1, arr2) => {
   const res = [];
   const { length: len1 } = arr1;
   const { length: len2 } = arr2;
   const smaller = (len1 < len2 ? arr1 : arr2).slice();
   const bigger = (len1 >= len2 ? arr1 : arr2).slice();
   for(let i = 0; i < smaller.length; i++){
      if(bigger.indexOf(smaller[i]) !== -1){
         res.push(smaller[i]);
         bigger.splice(bigger.indexOf(smaller[i]), 1, undefined);
      }
   };
   return res;
};
console.log(intersection(arr1 ,arr2));

आउटपुट

कंसोल में आउटपुट होगा -

[1, 2, 5, 3, 7, 7, 2]

  1. जावास्क्रिप्ट में अंतराल के सरणियों का प्रतिच्छेदन ढूँढना

    समस्या जावास्क्रिप्ट फ़ंक्शन जो दो सरणियों में लेता है, arr1 और arr2 अंतराल के जो जोड़ीदार असंबद्ध और क्रमबद्ध क्रम में हैं। एक बंद अंतराल [a, b] (a <=b के साथ) वास्तविक संख्या x के सेट को <=x <=b के साथ दर्शाता है। दो बंद अंतरालों का प्रतिच्छेदन वास्तविक संख्याओं का एक समूह है जो या तो खाली होता

  1. सी # में दो सरणियों का प्रतिच्छेदन

    दो सरणियों का प्रतिच्छेदन प्राप्त करने के लिए, प्रतिच्छेदन विधि का उपयोग करें। यह System.Linq नाम स्थान से एक विस्तार विधि है। विधि दो सरणियों के बीच सामान्य तत्वों को लौटाती है। पहले दो सरणियाँ सेट करें - int[] arr1 = { 44, 76, 98, 34 }; int[] arr2 = { 24, 98, 44, 55, 47, 86 }; अब दोनों सरणियों

  1. पायथन में दो सरणियों II का प्रतिच्छेदन

    मान लीजिए कि हमारे पास दो एरे ए और बी हैं, इन एरे में कुछ तत्व हैं। हमें उनका प्रतिच्छेदन खोजना होगा। तो अगर A =[1, 4, 5, 3, 6], और B =[2, 3, 5, 7, 9], तो चौराहा [3, 5] होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - दो सरणियाँ A और B लें यदि A की लंबाई B की लंबाई से छोटी है, तो उन्हें स्वैप