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

JavaScript में ऐरे का अधिकतम स्लाइस ढूंढें


मान लीजिए, हमें एक फ़ंक्शन लिखना आवश्यक है जो एक ऐरे को इनपुट के रूप में लेता है और ऐरे के अधिकतम स्लाइस को लौटाता है जिसमें दो से अधिक अलग-अलग नंबर नहीं हैं। यदि हम इस समस्या को ध्यान से देखें तो इसमें एक स्थिर सब ऐरे की जांच करना और मूल ऐरे पर पुनरावृति करना शामिल है।

इसलिए, स्लाइडिंग विंडो एल्गोरिदम इसके लिए बहुत उपयुक्त है। स्लाइडिंग विंडो एल्गोरिदम के माध्यम से इस समस्या को हल करने का कोड होगा:

उदाहरण

const arr = [1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 6, 2, 1, 8, 1, 1 ,1 ,1, 8, 1, 1, 8, 8];
const map = {
  length: 0
};
let required = [];
for(start = 0, end = 0; end <= arr.length; ){
  if(map.length > 2){
    if(map[arr[start]] === 1){
      delete map[arr[start]];
      map.length --;
    }else{
      map[arr[start]]--;
    };
    start++;
  }else{
    if(end - start > required.length){
      required = arr.slice(start, end);
    };
    if(map[arr[end]]){
      map[arr[end]]++;
    }else{
      map[arr[end]] = 1;
      map.length++;
    }
    end++;
  }
}
console.log(required);

हम किसी भी बिंदु पर ऐरे में विशिष्ट कैरेक्टर्स की गिनती स्टोर करने के लिए एक मैप बनाए रखते हैं और प्रत्येक पुनरावृत्ति पर सबसे लंबे सबऐरे की लंबाई की तुलना करते रहते हैं, जब विशिष्ट कैरेक्टर्स की गिनती 2 से अधिक हो जाती है, तो हम अगले स्थिर ऐरे की खोज के लिए ऐरे को दाएं स्लाइड करते हैं।

आउटपुट

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

[ 1, 8, 1, 1, 1, 1, 8, 1, 1, 8, 8 ]

  1. जावास्क्रिप्ट Array slice() मेथड जावास्क्रिप्ट Array slice() मेथड

    जावास्क्रिप्ट का slice() मेथड एरे में चुने गए एलिमेंट्स को लौटाने के लिए उपयोग किया जाता है। सिंटैक्स इस प्रकार है: array.slice(start, end) ऊपर, start पैरामीटर एक पूर्णांक है जो चयन शुरू करने का स्थान निर्दिष्ट करता है, जबकि end वह स्थान है जहां चयन समाप्त होता है। उदाहरण 1 <!DOCTYPE html>

  1. JavaScript Array.slice(): एरे का भाग निकालें JavaScript Array.slice(): एरे का भाग निकालें

    Array.prototype.slice() मेथड एरे के एक भाग को निकालकर नया एरे लौटाता है। मूल एरे अपरिवर्तित रहता है। ऋणात्मक इंडेक्स अंत से गिनते हैं। उदाहरण { // slice(1, 4) = इंडेक्स 1, 2, 3 (4 शामिल नहीं) const sliced = arr.slice(1, 4); fillEle.innerHTML = slice(1, 4) परिणाम: + slice

  1. जावास्क्रिप्ट में Array.prototype.find() मेथड जावास्क्रिप्ट में Array.prototype.find() मेथड

    परिचय Array.prototype.find() मेथड ऐरे में उस पहले एलिमेंट का मान लौटाता है जो दी गई टेस्टिंग फ़ंक्शन को संतुष्ट करता है। यदि कोई एलिमेंट टेस्ट पास नहीं करता, तो undefined लौटाता है। filter() के विपरीत, यह पहले मिलान पर रुक जाता है। उदाहरण निम्न कोड Array.prototype.find() मेथड के लिए है: <!DOCT