123456789101112131415161718192021 |
- func magicalString(n int) int {
- if n <= 1 {
- return n
- }
- l, pre, cnt := 3, 2, 1
- queue := []int{2}
- for l < n {
- inc := queue[0]
- queue = queue[1:]
- pre = 3 - pre
- for i := 0; i < inc && l < n; i++ {
- queue = append(queue, pre)
- l++
- if pre == 1 {
- cnt++
- }
- }
- }
- return cnt
- }
|