Back to all solutions

#667 - Beautiful Arrangement II

Problem Description

Given two integers n and k, construct a list answer that contains n different positive integers ranging from 1 to n and obeys the following requirement:

  • Suppose this list is answer = [a1, a2, a3, ... , an], then the list [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1 - an|] has exactly k distinct integers.

Return the list answer. If there multiple valid answers, return any of them.

Solution

/**
 * @param {number} n
 * @param {number} k
 * @return {number[]}
 */
var constructArray = function(n, k) {
  const result = [];

  for (let i = 0, left = 1, right = n; i < n; i++) {
    if (k > 1) {
      result.push(k % 2 === 0 ? right-- : left++);
      k--;
    } else {
      result.push(left++);
    }
  }

  return result;
};