Your question is Optimizing Performance and Memory. 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).
Kis Solutions builds route-planning software for delivery fleets. One function summarizes a batch of delivery stops into a per-zone weight report, used to balance load across trucks. It works on small test batches, but on a real day's stop list it is both slow and uses far more memory than it should.
#include <vector>
#include <string>
struct DeliveryStop {
std::string zoneCode;
double weightKg;
};
std::vector<std::string> summarizeZones(std::vector<DeliveryStop> stops) {
std::vector<std::string> zoneReport;
for (int i = 0; i < stops.size(); i++) {
bool alreadyListed = false;
for (int j = 0; j < zoneReport.size(); j++) {
std::string existingZone = zoneReport[j].substr(0, zoneReport[j].find(":"));
if (existingZone == stops[i].zoneCode) {
alreadyListed = true;
}
}
if (!alreadyListed) {
double totalWeight = 0;
for (int k = 0; k < stops.size(); k++) {
if (stops[k].zoneCode == stops[i].zoneCode) {
totalWeight += stops[k].weightKg;
}
}
zoneReport.push_back(stops[i].zoneCode + ": " + std::to_string(totalWeight) + "kg");
}
}
return zoneReport;
}
How would you optimize this function for better performance or lower memory usage? Explain each issue you find and exactly how your change fixes it.