func constructArray(n int, k int) []int { res := make([]int, n) res[0] = 1 l, r, i, f := 2, n, 1, 0 for ; k != 1; k-- { if f == 0 { res[i] = r r-- } else { res[i] = l l++ } i++ f ^= 1 } // To increase k, we have: // _______ _____ ___ // 1 2 3 4 5 (k=1) -> 1 5 4 3 2 (k=2) -> 1 5 2 3 4 (k=3) -> 1 5 2 4 3 (k=4) if f == 0 { for ; l <= r; l++ { res[i] = l i++ } } else { for ; l <= r; r-- { res[i] = r i++ } } return res }