किसी सरणी की डिग्री को उसके किसी भी तत्व की अधिकतम आवृत्ति के रूप में परिभाषित किया जाता है।
const arr = [1, 2, 3, 3, 5, 6, 4, 3, 8, 3];
इस सरणी की डिग्री 4 है, क्योंकि 3 इस सरणी में 4 बार दोहराया गया है।
हमें एक JavaScript फ़ंक्शन लिखना है जो literals की एक सरणी लेता है। हमारे फ़ंक्शन का कार्य उस सरणी से सबसे छोटी सतत उपसरणी की लंबाई ढूंढना है जिसकी डिग्री पूरी सरणी के समान हो।
उदाहरण
const arr = [1, 2, 3, 3, 5, 6, 4, 3, 8, 3];
const findShortestSubArray = (arr = []) => {
let range = new Map(), maxDegree = 0, minLength = Infinity;
for(let i = 0; i < arr.length; i++){
if(range.has(arr[i])) {
let start = range.get(arr[i])[0];
let degree = range.get(arr[i])[2];
degree++;
range.set(arr[i], [start, i, degree]);
if(degree > maxDegree)
maxDegree = degree;
} else {
let degree = 1;
range.set(arr[i],[i, i, degree]);
if(degree > maxDegree)
maxDegree = degree;
}
}
for (let key of range.keys()){
let val = range.get(key);
if(val[2] === maxDegree){
let diff = (val[1] - val[0]) + 1;
if(diff < minLength) minLength = diff;
}
}
return minLength;
};
console.log(findShortestSubArray(arr));
आउटपुट
कंसोल में आउटपुट होगा -
8