481.magical-string.go 298 B

123456789101112131415161718192021
  1. func magicalString(n int) int {
  2. if n <= 1 {
  3. return n
  4. }
  5. l, pre, cnt := 3, 2, 1
  6. queue := []int{2}
  7. for l < n {
  8. inc := queue[0]
  9. queue = queue[1:]
  10. pre = 3 - pre
  11. for i := 0; i < inc && l < n; i++ {
  12. queue = append(queue, pre)
  13. l++
  14. if pre == 1 {
  15. cnt++
  16. }
  17. }
  18. }
  19. return cnt
  20. }