Subsets Spécifiez un ensemble avec des éléments individuels pour trouver tout ce sous-ensemble individuel.
Input: [1, 3] Output: [], [1], [3], [1,3]
Input: [1, 5, 3] Output: [], [1], [5], [3], [1,5], [1,3], [5,3], [1,5,3]
Solution Vous pouvez utiliser l'approche de recherche de priorité de largeur (BFS) pour générer tous les sous-ensembles de l'ensemble spécifié. Vous pouvez commencer avec un ensemble vide, répéter tous les nombres un par un et les ajouter à l'ensemble existant pour créer un nouveau sous-ensemble.
À titre d'exemple, considérons [1, 5, 3].
Diagramme d'image

# Time Complexity: O(2^N) where N is the total number of elements in the input set
# Space Complexity: O(2^N)
def find_subsets(nums):
  subsets = []
  # start by adding the empty subset
  subsets.append([])
  for currentNumber in nums:
    # we will take all existing subsets and insert the current number in them to create new subsets
    n = len(subsets)
    for i in range(n):
      # create a new subset from the existing subset and insert the current element to it
      subset = list(subsets[i])
      subset.append(currentNumber)
      subsets.append(subset)
  return subsets
def main():
  print("Here is the list of subsets: " + str(find_subsets([1, 3])))
  print("Here is the list of subsets: " + str(find_subsets([1, 5, 3])))
main()
        Recommended Posts