672.bulb-switcher-ii.go 414 B

12345678910111213141516171819202122
  1. func flipLights(n int, m int) int {
  2. // 1. Flip all;
  3. // 2. Flip odd;
  4. // 3. Flip even;
  5. // 4. Flip 3k + 1.
  6. // So, 1 + 2 -> 3, we have 8 states at most:
  7. // On; 1; 2; 3; 4; 1 + 4; 2 + 4; 3 + 4.
  8. // When 2 < n and 3 <= m, we can have them all.
  9. switch {
  10. case m == 0:
  11. return 1
  12. case n == 1:
  13. return 2
  14. case n == 2 && m == 1:
  15. return 3
  16. case n == 2 || m == 1:
  17. return 4
  18. case m == 2:
  19. return 7
  20. }
  21. return 8
  22. }