面试题答案
一键面试package main
import (
"fmt"
)
func calculateTotalSales(nestedMap map[string]map[int]float64) map[string]float64 {
result := make(map[string]float64)
for region, innerMap := range nestedMap {
for _, sales := range innerMap {
result[region] += sales
}
}
return result
}
时间复杂度分析
假设外层Map有m
个地区,内层Map平均每个地区有n
个商家。遍历嵌套Map的时间复杂度为$O(m * n)$,因为需要遍历外层的m
个地区,对于每个地区又需要遍历内层平均n
个商家。
空间复杂度分析
空间复杂度主要取决于存储结果的result
map。最坏情况下,result
map需要存储m
个地区的总销售额,所以空间复杂度为$O(m)$。
优化以适应超大规模数据处理
- 分布式处理:可以将数据按地区拆分到不同的机器上并行计算每个地区的总销售额,最后汇总结果。
- 增量计算:如果数据是不断更新的,可以采用增量计算的方式,每次更新只计算变化部分,而不是重新遍历整个数据。
- 内存管理:在处理超大规模数据时,需要注意内存的使用。可以考虑使用流处理方式,避免一次性将所有数据加载到内存中。
使用示例:
func main() {
nestedMap := map[string]map[int]float64{
"North": {
1: 100.5,
2: 200.3,
},
"South": {
3: 150.7,
4: 250.2,
},
}
totalSales := calculateTotalSales(nestedMap)
for region, sales := range totalSales {
fmt.Printf("Region: %s, Total Sales: %.2f\n", region, sales)
}
}