Beautiful Arrangement II

medium math construction

Problem

Construct any permutation of 1..n whose adjacent-difference set has exactly k distinct values.

Inputn=3 k=2
Output[1,3,2]
Diffs: 2,1 → 2 distinct.

def construct_array(n, k):
    out = []; lo, hi = 1, k + 1
    while lo <= hi:
        out.append(lo); lo += 1
        if lo <= hi: out.append(hi); hi -= 1
    for v in range(k + 2, n + 1): out.append(v)
    return out
function constructArray(n, k) {
  const out = []; let lo = 1, hi = k + 1;
  while (lo <= hi) { out.push(lo++); if (lo <= hi) out.push(hi--); }
  for (let v = k + 2; v <= n; v++) out.push(v);
  return out;
}
int[] constructArray(int n, int k) {
    int[] out = new int[n]; int idx = 0, lo = 1, hi = k + 1;
    while (lo <= hi) {
        out[idx++] = lo++;
        if (lo <= hi) out[idx++] = hi--;
    }
    for (int v = k + 2; v <= n; v++) out[idx++] = v;
    return out;
}
vector constructArray(int n, int k) {
    vector out; int lo = 1, hi = k + 1;
    while (lo <= hi) { out.push_back(lo++); if (lo <= hi) out.push_back(hi--); }
    for (int v = k + 2; v <= n; v++) out.push_back(v);
    return out;
}
Time: O(n) Space: O(n)