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

जावास्क्रिप्ट में दो सरणियों से अधिकतम संख्या ढूँढना

<घंटा/>

समस्या

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता होती है जो एकल अंक संख्याओं के दो सरणी लेता है जो दो संख्याओं का प्रतिनिधित्व करता है, arr1 और arr2 पहले और दूसरे तर्क के रूप में। फ़ंक्शन का तीसरा तर्क एक संख्या होगी,

num (num <= length of arr1 + length of arr2)

हमारे फ़ंक्शन को लंबाई संख्या के एकल अंक संख्याओं की एक नई सरणी वापस करनी चाहिए, जो स्वयं में एक संख्या का प्रतिनिधित्व करती है। और संख्या वह अधिकतम संख्या होनी चाहिए जिसे हम दोनों सरणियों से तत्व का उपयोग करके बना सकते हैं, हमारे लिए एकमात्र शर्त यह है कि हमें एक ही सरणी से तत्वों के सापेक्ष क्रम को संरक्षित करना होगा।

उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -

const arr1 = [1, 3, 4, 5, 6];
const arr2 = [9, 1, 2, 5, 8, 3];
const num = 4;

तब आउटपुट होना चाहिए -

const output = [9, 8, 6, 3];

उदाहरण

इसके लिए कोड होगा -

const arr1 = [1, 3, 4, 5, 6];
const arr2 = [9, 1, 2, 5, 8, 3];
const num = 4;
const maxArray = (arr1 = [], arr2 = [], num) => {
   const map = new Map();
   const match = (a, b, num) => {
      if (map.has(a + ',' + b + ',' + num)) {
         return map.get(a + ',' + b + ',' + num);
      }
      let output = [];
      while(num > 0) {
         let maxa = -Infinity;
         let maxai = 0;
         let maxb = -Infinity;
         let maxbi = 0;
         for(let i = a; i < arr1.length && arr1.length + arr2.length - (i + b) >= num; i++) {
            if (arr1[i] > maxa) {
               maxa = arr1[i];
               maxai = i;
            }
         }
         for(let i = b; i < arr2.length && arr1.length + arr2.length - (a + i) >= num; i++) {
            if (arr2[i] > maxb) {
               maxb = arr2[i];
               maxbi = i;
            }
         }
         if (maxa === maxb) {
            output.push(maxa);
            let ca = map.get(a+','+(maxbi+1)+','+(num-1)) || match(a, maxbi+1, num-1);
            let cb = map.get((maxai+1)+','+b+','+(num-1)) || match(maxai+1,b,num-1);
            map.set(a+','+(maxbi+1)+','+(num-1), ca);
            map.set((maxai+1)+','+b+','+(num-1), cb);
            if (ca.join('') > cb.join('')) {
               return [...output, ...ca];
            } else {
               return [...output, ...cb];
            }
         } else if (maxa > maxb) {
            output.push(maxa);
            a = maxai + 1;
         } else {
            output.push(maxb);
            b = maxbi + 1;
         }
         num--;
      }
      map.set(a + ',' + b + ',' + num, output);
      return output;
   }
   return match(0, 0, num);
};
console.log(maxArray(arr1, arr2, num));

कोड स्पष्टीकरण:

हमने जो कदम उठाए वे हैं -

  • शेष संख्या की अनुमति होने तक लूप के लिए उपयोग किया जाता है।

  • यदि arr1 में arr2 से अधिक संख्या होती है, तो हमने पहले arr1 नंबर का उपयोग किया, अन्यथा हमने arr2number का उपयोग किया।

  • जब arr1 और arr2 में समान संख्या थी जब तक कि फॉर-लूप की अनुमति नहीं दी जाती, हमने दो मानों की तुलना करने के लिए केवल रिकर्सन का उपयोग किया, और बड़ी संख्या को चुना।

आउटपुट

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

[ 9, 8, 6, 3 ]

  1. जावास्क्रिप्ट में m से n तक पहुँचने के लिए आवश्यक संचालन की न्यूनतम संख्या ढूँढना

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो पहले और दूसरे तर्क के रूप में दो संख्याओं, m और n को लेता है। हमारा फ़ंक्शन केवल इन दो ऑपरेशनों का उपयोग करके, m से n तक पहुंचने के लिए आवश्यक न्यूनतम संचालन की संख्या की गणना करने वाला है - दोहरा - डिस्प्ले पर संख्या को 2 से गुणा करे

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

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो दो सरणियों arr1 और arr2 में लेता है। arr2 arr1 का फेरबदल किया गया डुप्लिकेट है जिसमें केवल एक तत्व गायब है। हमारे फ़ंक्शन को उस एक तत्व को ढूंढना और वापस करना चाहिए। उदाहरण निम्नलिखित कोड है - { const obj ={}; के लिए (चलो i =0; i

  1. जावास्क्रिप्ट में दो सरणियों से तारों की लंबाई का अधिकतम पूर्ण अंतर

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो दो सरणियों, a1 और a2 स्ट्रिंग्स में लेता है। प्रत्येक स्ट्रिंग ए से जेड तक अक्षरों से बना है। मान लीजिए कि पहली सरणी में x कोई स्ट्रिंग है और दूसरी सरणी में y कोई स्ट्रिंग है। हमारे फ़ंक्शन को − . का मान ज्ञात करना चाहिए max(abs(length(x) − le