感觉就是一道数学题,先按照一定规律写
1,+k,-(k-1),+(k-2)….然后所有这些情况就都满足了
写完之后,然后按照顺序写就可以了,把没有遍历过的点都走一遍
class Solution {
public:
vector<int> constructArray(int n, int k) {
vector<int> result;
vector<int> visit(n+1,0);
int i=1;
int temp=k;
int signal=1;
visit[i]=1;
result.push_back(i);
while(1)
{
i=i+signal*temp;
if(visit[i]==0&&i<=n&&i>=1){
visit[i]=1;
result.push_back(i);
if(temp==1){
temp=k;
signal=1;
}
else{
temp--;
signal = -signal;
}
}
else
break;
cout<<temp<<" ";
}
for(int i=1;i<=n;i++)
{
if(visit[i]==0){
result.push_back(i);
visit[i] = 1;
}
}
return result;
}
};