class Solution:
def totalHammingDistance(self, nums: List[int]) -> int:
sum1 = 0
for i in range(31):
c1,c2 = 0,0
for n in nums:
if (n>>i)&1:
c1+=1
else:
c2+=1
sum1+= c1*c2
return sum1
class Solution:
def magicalString(self, n: int) -> int:
if n == 0:
return 0
if n <= 3:
return 1
s = '122'
a = '1'
i = 2
res = 3
while res <= n:
s += a*int(s[i])
res += int(s[i])
a = '2' if a == '1' else '1'
i += 1
return s[:n].count("1")
class Solution:
def findSubsequences(self, nums: List[int]) -> List[List[int]]:
def backtrack(t):
if t == len(nums):
return
tep.append(0)
s = {}
for i in range(t+1,len(nums)):
if nums[i] >= nums[t] and nums[i] not in s:
s[nums[i]] = 1
tep[-1] = nums[i]
res.append(tep[:])
backtrack(i)
tep.pop()
res = []
s = {}
tep = [0]
for i in range(len(nums)):
if nums[i] not in s:
s[nums[i]] = 1
tep[0] = nums[i]
backtrack(i)
return res