123456789101112131415161718192021222324252627282930 |
- 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
- }
|