У меня есть несортированный массив (сгенерированных роликов), и я хочу выбрать верхние N его элементов (что тривиально с сортировкой и сокращением), но отметьте их сохраняя при этом порядок.Отметить верхние N элементов несортированного массива
.: например
mark([1,2,3,4], 3) ==> [[1, false], [2, true], [3, true], [4, true]]
mark([3,5,2,6,2], 3) ==> [[3, true], [5, true], [2, false], [6, true], [2, false]]
Массив может содержать любые значения от 1 до, и быть любой длины, и количество отмеченных элементов является переменной.
Я мог бы жить с
mark([3,5,2,6,2], 3) ==> [[3, true], [5, true], 2, [6, true], [2, true]]
(т.е. цифры, которые были бы отмечены ложные идти без опознавательных знаков), но я предпочел бы избежать этого.
Обязательным является то, что порядок массива остается неизменным.
Если верхние элементы повторяются (например, верхняя часть 3 из [6,6,6,6,6,6]), отметьте первые 3 элемента.
(N достаточно мала для сложности, не имеет большого значения.)
EDIT: Бонус точка: добавить параметр для переключения между «сверху» и режим «снизу».
Не могли бы вы просто пройти через массив один раз и просто записывать показатели высших трех чисел встречаются? Во время сканирования вы отмечаете все как ложные. Затем, к тому времени, как вы проверили весь массив, вам просто нужно пометить элементы, расположенные по индексам, которые вы сохранили, как true. – dreamlax
Действительно ли это вопрос PHP? Он помечен PHP. –
Было бы неплохо ответить на вопросы. Вы помечаете свой вопрос PHP, тогда вы принимаете ответы на двух других языках. Всякий раз, когда вы неправильно задаете вопрос, вы теряете время. В этом случае, мой. –