Mức độ của một mảng các ký tự được xác định là tần số tối đa của bất kỳ một phần tử nào của nó.
const arr = [1, 2, 3, 3, 5, 6, 4, 3, 8, 3];
Mức độ của mảng này là 4, vì 3 được lặp lại 4 lần trong mảng này.
Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng các ký tự. Nhiệm vụ của hàm của chúng ta là tìm độ dài của mảng con liền kề nhỏ nhất từ mảng có độ bằng của toàn bộ mảng.
Ví dụ
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));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
8