हमें एक JavaScript फ़ंक्शन लिखना है जो पहली आर्गुमेंट के रूप में संख्याओं की एक सरणी लेता है, मान लीजिए arr, और दूसरी आर्गुमेंट के रूप में एक संख्या, मान लीजिए num। फ़ंक्शन को सबसे लंबी उप-सरणी (सन्निकट या असन्निकट) ढूंढनी चाहिए और उसकी लंबाई लौटानी चाहिए जिसके प्रत्येक जोड़े का निरपेक्ष अंतर num से कम या बराबर हो।
उदाहरण के लिए, यदि इनपुट सरणी और संख्या हैं:
const arr = [7, 9, 8, 6, 6, 3]; const num = 1;
तो आउटपुट होना चाहिए:
const output = 3,
क्योंकि वांछित उप-सरणी है [7, 6, 6]
उदाहरण
const arr = [7, 9, 8, 6, 6, 3];
const maximumSubarray = (arr = [], num = 1) => {
if(!arr.length){
return 0;
};
const maximum = arr.reduce((acc, val) => Math.max(acc, val));
const buckets = new Array(maximum + 1);
buckets.fill(0);
const { length } = arr;
for(let i=0; i< length; i++){
buckets[arr[i]] += num;
};
let max = 0;
for(let j=1; j< maximum + 1; j++) {
let curr = buckets[j];
let prev = buckets[j - 1];
if(prev != 0 && prev + curr > max) {
max = prev + curr;
};
};
return max;
};
console.log(maximumSubarray(arr));
आउटपुट
3