Skip to content

Latest commit

 

History

History
59 lines (46 loc) · 1.13 KB

File metadata and controls

59 lines (46 loc) · 1.13 KB

672 Bulb Switcher II

Description

link


Solution

Operations: O(flip odds), E(flip evens), A(flip all), T(flip 3k + 1), N(flip nothing) Relations: O + O = N, E + E = N, A + A = N, T + T = N O + E = A, O + A = E, E + A = O Exclusive statuses : n > 2: ① N ② O ③ E ④ A ⑤ T ⑥ O + T ⑦ E + T ⑧ A + T

n = 2 (remove all T related statuses): ① N ② O ③ E ④ A

n = 1(remove all T, E, A related statuses): ① N ② O

Steps needed to all status( always can plus 2 * k) ① can only be achieved by 0, 2 steps ②,③,④ can be achieved by either 1 or 2 steps ⑤ can only be achieved by 1 steps ⑥,⑦,⑧ can only be achieved by 2 steps,

Thus: 0 steps -> ① 1 steps -> ②,③,④,⑤ 2 steps -> ①,②,③,④,⑥,⑦,⑧ more than 2 steps -> ①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧


Code

class Solution:
    def flipLights(self, n: int, m: int) -> int:
        m, n = min(3, m), min(3, n)
        return 1 if n == 0 or m == 0 else self.flipLights(n - 1,  m) + self.flipLights( n - 1, m - 1)