跳到主要内容

667.优美的排列II

链接:667.优美的排列II
难度:Medium
标签:数组、数学
简介:给你两个整数 n 和 k ,请你构造一个答案列表 answer ,该列表应当包含从 1 到 n 的 n 个不同正整数。

题解 1 - c

  • 编辑时间:2022-09-08
  • 执行用时:28ms
  • 内存消耗:8.9MB
  • 编程语言:c
  • 解法介绍:[1, k+1, 2, k, 3, k-1..]排列。
int* constructArray(int n, int k, int* returnSize){
*returnSize = n;
int *ans = (int *)malloc(sizeof(int) * n);
if (k == 1) for (int i = 0; i < n; i++) ans[i] = i + 1;
else {
int l = 1, r = k + 1, idx = 0;
while (l < r) {
ans[idx++] = l++;
if (l != r) ans[idx++] = r--;
}
if (l == r) ans[id++] = l;
k += 2;
while (k <= n) ans[idx++] = k++;
}
return ans;
}