Your question is Code Complexity Optimization. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
GIVA runs a jewellery e-commerce catalog where bundle-discount suggestions and duplicate-listing cleanup run on every catalog sync. The functions below are all functionally correct but scale badly as the catalog grows past a few thousand SKUs.
def find_matching_bundle(products, target_price):
# products: list of dicts like {"sku": str, "name": str, "price": float}
best_pair = None
best_diff = float("inf")
for i in range(len(products)):
for j in range(len(products)):
if i != j:
combined = products[i]["price"] + products[j]["price"]
diff = abs(combined - target_price)
if diff < best_diff:
best_diff = diff
best_pair = (products[i], products[j])
return best_pair
def remove_duplicate_skus(products):
seen = []
unique = []
for p in products:
if p["sku"] not in seen:
unique.append(p)
seen.append(p["sku"])
return unique
def catalog_summary(products):
total_value = 0
for p in products:
total_value += p["price"] * products.count(p)
return total_value
Explain the time and space complexity of each function as written, and how you would bring each one down.