Показать сообщение отдельно
  #9 (permalink)  
Старый 31.10.2022, 23:20
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Не знаю насколько оптимально, но без сортировки:

const array = [9, 9, 9, 9, 8, 8, 4, 4, 4, 1, 2];
 
const getN = (array, n) => {
    let acc={}, arr=[];
    array.forEach( c => {
        acc[c] ? acc[c] += 1 : acc[c] = 1;
        arr[ acc[c] ] ? arr[ acc[c] ].push(c) : arr[ acc[c] ] = [c];
    } );

    for( let i=arr.length - 1; i>1; i-- ) {
        if( arr[i].length >= n ) return arr[i];
    }    
    return arr[1];
}
 
console.log(getN(array, 2)); // [9, 4]
console.log(getN([1, 1, 1, 2, 2, 3, 3, 3,], 2)) // [1, 3]
console.log(getN([5, 5, 5, 9, 8, 9, 1, 1, 1, 1], 3)); // [1, 5, 9]

Последний раз редактировалось Белый шум, 31.10.2022 в 23:40.
Ответить с цитированием