667.beautiful-arrangement-ii.go 526 B

123456789101112131415161718192021222324252627282930
  1. func constructArray(n int, k int) []int {
  2. res := make([]int, n)
  3. res[0] = 1
  4. l, r, i, f := 2, n, 1, 0
  5. for ; k != 1; k-- {
  6. if f == 0 {
  7. res[i] = r
  8. r--
  9. } else {
  10. res[i] = l
  11. l++
  12. }
  13. i++
  14. f ^= 1
  15. } // To increase k, we have:
  16. // _______ _____ ___
  17. // 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)
  18. if f == 0 {
  19. for ; l <= r; l++ {
  20. res[i] = l
  21. i++
  22. }
  23. } else {
  24. for ; l <= r; r-- {
  25. res[i] = r
  26. i++
  27. }
  28. }
  29. return res
  30. }