**permalink:** /archive/posts/daily_leetcode_3/

**date:** Thu Sep 22 2022 00:00:00 GMT+0000 (Coordinated Universal Time)

**Medium**

Given an integer array

`nums`

of unique elements, return all possible subsets (the power set).The solution set must not contain duplicate subsets. Return the solution in any order.

Not a bad one today. You can pretty easily construct a powerset just by looping through your values and adding them to the previous subsets.

`class Solution:`

def subsets(self, nums: List[int]) -> List[List[int]]:

result = [[]] # P(S) also contains null set

for i in nums:

result.extend([sset + [i] for sset in result])

return result

However, I found you can also do this much more functionally by abusing `itertools`

' `combinations`

function.

`from itertools import combinations, chain`

class Solution:

def subsets(self, nums: List[int]) -> List[List[int]]:

return chain.from_iterable(

combinations(nums, i) for i in range(len(nums) + 1)

)

I think using libraries is a bit of a copout though. It's a bit strange that Leetcode allows them, however `itertools`

is a part of the Python standard lib, so I guess there's no way around it.