LeetCode 667. Beautiful Arrangement II
原题链接
中等
作者:
孤独时代的罗永浩
,
2020-08-16 07:42:38
,
所有人可见
,
阅读 518
这题远看很深奥,近看就是找规律啊,要先构造出 k + 1个数字的序列让相邻的两个数字之间的差值不一样,
这段数字之外的数字就直接按照顺序排就可以了
构造的规律如下:1, k + 1, 2, k , 3, k - 1, 4, k + 2....
差值的绝对值: k, k - 1, k - 2....
举例:n = 7, k = 5
1, 6, 2, 5, 3, 4, 7
class Solution {
public:
vector<int> constructArray(int n, int k) {
vector<int> ret;
ret.push_back(1);
for(int i = 0; i < k; i++)
{
if(i % 2 == 0)
ret.push_back(1 + k - i / 2);
else
ret.push_back(2 + i / 2);
}
for(int i = k + 2; i <= n; i++)
ret.push_back(i);
return ret;
}
};