@@ -56,7 +56,7 @@ def linear_sieve_of_eratosthenes(n): # Time: O(n), Space: O(n)
56
56
import collections
57
57
58
58
59
- # number theory, combinatorics, backtracking , memoization, bitmasks
59
+ # number theory, combinatorics, bitmasks , memoization
60
60
class Solution2 (object ):
61
61
def squareFreeSubsets (self , nums ):
62
62
"""
@@ -94,13 +94,13 @@ def linear_sieve_of_eratosthenes(n): # Time: O(n), Space: O(n)
94
94
cnt = collections .Counter (nums )
95
95
arr = [x for x in cnt .iterkeys () if x != 1 ]
96
96
dp = [[- 1 ]* (1 << len (PRIMES )) for i in xrange (len (arr ))]
97
- def backtracking (i , mask ):
97
+ def memoization (i , mask ):
98
98
if i == len (arr ):
99
99
return 1
100
100
if dp [i ][mask ] == - 1 :
101
- dp [i ][mask ] = backtracking (i + 1 , mask )
101
+ dp [i ][mask ] = memoization (i + 1 , mask )
102
102
if MASKS [arr [i ]] and MASKS [arr [i ]]& mask == 0 :
103
- dp [i ][mask ] = (dp [i ][mask ]+ cnt [arr [i ]]* backtracking (i + 1 , mask | MASKS [arr [i ]]))% MOD
103
+ dp [i ][mask ] = (dp [i ][mask ]+ cnt [arr [i ]]* memoization (i + 1 , mask | MASKS [arr [i ]]))% MOD
104
104
return dp [i ][mask ]
105
105
106
- return (backtracking (0 , 0 )* pow (2 , cnt [1 ], MOD )- 1 )% MOD if 1 in cnt else (backtracking (0 , 0 )- 1 )% MOD
106
+ return (memoization (0 , 0 )* pow (2 , cnt [1 ], MOD )- 1 )% MOD if 1 in cnt else (memoization (0 , 0 )- 1 )% MOD
0 commit comments