667. Beautiful Arrangement II
Given two integers n
and k
, you need to construct a list which contains n
different positive integers ranging from 1
to n
and obeys the following requirement:
Suppose this list is [a1, a2, a3, ... , an], then the list [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1 - an|] has exactly k
distinct integers.
If there are multiple answers, print 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.
Note:
- The
n
andk
are in the range 1 <= k < n <= 104.
使 | a1 - a2 | | a2 - a3 | | a3 - a4 |…an-1正好有k个不同的整数
a1,a2,a3....为1-n不同的整数
C++(30ms):
1 class Solution { 2 public: 3 vector<int> constructArray(int n, int k) { 4 vector<int> res ; 5 int j = n ; 6 for(int i = 1 ; i <= j ;){ 7 if (k > 1){ 8 res.push_back(k-- % 2 ? i++ : j--) ; 9 }else{ 10 res.push_back(i++) ; 11 } 12 } 13 return res ; 14 } 15 };