LeetCode 667. Beautiful Arrangement II

来源:互联网 发布:jquery.min.js报错 编辑:程序博客网 时间:2024/05/29 16:56

Discription

给定两个整数nk,构建一个n个元素数组,数组要满足一下要求:
假设数组[a1,a2....an]那么[|a2-a1|,|a3-a2|.....]包含k个不同的整数。如果有多个数组输出任意一个数组。1<=k<n<=10000

Example

Input: n = 3, k = 1
Output: [1, 2, 3]
Input: n = 3, k = 2
Output: [1, 3, 2]

Solution

给定n那么k最大为n-1,假设这k个数字是 n-1,n-2,n-3...1,所以数列可以是1,n-1,2,n-2,....,比如给定n=9 k=8则数列可以是1 9 2 8 3 7 6 4 5,可以看出这组数据差值是8 7 6 5 4 3 2 1,如果给定k<n-1,则将剩余的项用递增或者递减顺序即可。

Code

vector<int> constructArray(int n, int k){    vector<int> res;    for (int i = 1, j = n; i <= j;)    {        if (k > 1)        {            if (k % 2 == 0)                res.push_back(i++);            else                res.push_back(j--);            k--;        }        else        {            if (k % 2 == 0)                res.push_back(i++);            else                res.push_back(j--);        }    }    return res;}
原创粉丝点击