Back to all solutions

#1409 - Queries on a Permutation With Key

Problem Description

Given the array queries of positive integers between 1 and m, you have to process all queries[i] (from i=0 to i=queries.length-1) according to the following rules:

  • In the beginning, you have the permutation P=[1,2,3,...,m].
  • For the current i, find the position of queries[i] in the permutation P (indexing from 0) and then move this at the beginning of the permutation P. Notice that the position of queries[i] in P is the result for queries[i].

Return an array containing the result for the given queries.

Solution

/**
 * @param {number[]} queries
 * @param {number} m
 * @return {number[]}
 */
var processQueries = function(queries, m) {
  const permutation = Array.from({ length: m }, (_, i) => i + 1);
  const result = [];

  for (const query of queries) {
    const position = permutation.indexOf(query);
    result.push(position);
    permutation.splice(position, 1);
    permutation.unshift(query);
  }

  return result;
};