672. Bulb Switcher II
Description
Intuition
- 初步观察可得,如果update了
xlight,那么(x+6)light. 进一步观察可得
Assume:
adenotes Flip all the lights.bdenotes Flip lights with even numbers.cdenotes Flip lights with odd numbers.Ddenotes Flip lights with (3k + 1) numbers, k = 0, 1, 2, ...
Light 1 = 1 + a + c + d
- Light 2 = 1 + a + b
- Light 3 = 1 + a + c
- Light 4 = 1 + a + b + d
- Light 5 = 1 + a + c
- Light 6 = 1 + a + b
那么可以发现,
- Light 4 = (Light 1) + (Light 2) + (Light 3)
- Light 5 = Light 3
- Light 6 = Light 2
所以,我们可以用头3个灯泡来表示所有的灯泡状态
m == 1,所以有a,b,c,d四种操作1 1 1 (Orignal) 0 0 0 (a) 1 0 1 (b) 0 1 0 (c) 0 1 1 (d)m == 21 1 1 (Orignal) 1 1 1 (aa -> null) 0 1 0 (ab -> c) 1 0 1 (ac -> b) 1 0 0 (ad -> null) 0 1 0 (ba -> ab) 1 1 1 (bb -> null) 0 0 0 (bc -> a) 0 0 1 (bd -> null) 1 1 0 (cd -> null)n == 1,return 2n == 2,11,00,01,10,return 4n == 3,111,110,101,100,010,001,000,return 7
m == 3
```java
1 1 1 (Orignal)
0 0 0 (aaa -> a)
1 0 1 (aab -> b)
0 1 0 (aac -> c)
0 0 1 (aad -> d)
1 1 1 (abc -> null)
1 1 0 (abd -> cd)
0 0 1 (acd -> bd)
1 0 0 (bcd -> ad)
```
1. `n == 1`, `return 2`
1. `n == 2`, `11`, `00`, `01`, `10`, `return 4`
1. `n == 3`, `111`, `110`, `101`, `100`, `011`, `010`, `001`, `000`, `return 8`