ระดับของอาร์เรย์ของตัวอักษรถูกกำหนดให้เป็นความถี่สูงสุดขององค์ประกอบใดองค์ประกอบหนึ่ง
const arr = [1, 2, 3, 3, 5, 6, 4, 3, 8, 3];
ดีกรีของอาร์เรย์นี้คือ 4 เนื่องจาก 3 ซ้ำกัน 4 ครั้งในอาร์เรย์นี้
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ของตัวอักษร งานของฟังก์ชันของเราคือการหาความยาวของ subarray ต่อเนื่องที่เล็กที่สุดจากอาร์เรย์ที่มีดีกรีเท่ากับอาร์เรย์ทั้งหมด
ตัวอย่าง
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