## Algorithm

Problem Name: 667. Beautiful Arrangement II

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.

Example 1:

```Input: n = 3, k = 1
Output: [1,2,3]
Explanation: The [1,2,3] has three different positive integers ranging from 1 to 3, and the [1,1] has exactly 1 distinct integer: 1
```

Example 2:

```Input: n = 3, k = 2
Output: [1,3,2]
Explanation: The [1,3,2] has three different positive integers ranging from 1 to 3, and the [2,1] has exactly 2 distinct integers: 1 and 2.
```

Constraints:

• `1 <= k < n <= 104`

## Code Examples

### #1 Code Example with Javascript Programming

```Code - Javascript Programming```

``````
const constructArray = function (n, k) {
const res = 
while (k) {
const index = res.length
if (index % 2 === 1) {
res.push(res[index - 1] + k)
} else {
res.push(res[index - 1] - k)
}
k -= 1
}
if (res.length < n) {
for (let i = res.length + 1; i <= n; i += 1) {
res.push(i)
}
}
return res
}
``````
Copy The Code &

Input

cmd
n = 3, k = 1

Output

cmd
[1,2,3]

### #2 Code Example with Python Programming

```Code - Python Programming```

``````
class Solution:
def constructArray(self, n, k):
"""
:type n: int
:type k: int
:rtype: List[int]
"""
left, right, res = 0, n+1, [None]*n
for i in range(n):
if k == 1:
if i%2 == 0:
while i``````
``` Copy The Code & Input x – + cmd n = 3, k = 1 Output x – + cmd [1,2,3] ```
``` Demonstration ```
``` #665 Leetcode Non-decreasing Array Solution in C, C++, Java, JavaScript, Python, C# Leetcode #668 Leetcode Kth Smallest Number in Multiplication Table Solution in C, C++, Java, JavaScript, Python, C# Leetcode ```
``` ```