這題需要觀察, 看完解答才知道怎麼做
假設我們n =9, k最大就是8,最小就是1
n = 9
k = 8 i++ j-- i++ j-- i++ j-- i++ j-- i++
i 1 2 3 4 5
j 9 8 7 6
那如果想要做到k <8的可能, 只需要再歷經幾次後一律都用i++就行了
舉個例子
n = 9
k = 5 i++ j-- i++ j-- i++ i++ i++ i++ i++
i 1 2 3 5 7
j 9 8 4 6
當k的為奇數就是i++, k 為偶數就是j- -, 一旦k < 1, 就都是i++
class Solution {
public:
vector<int> constructArray(int n, int k) {
vector<int> res;
for(int i = 1, j = n; i <=j;){
if(k > 1){
res.push_back(k % 2?i++:j--);
k--;
}else{
res.push_back(i++);
}
}
return res;
}
};