面试题答案
一键面试arr = (1..1000).to_a
sum = arr.select { |num| num % 3 == 0 }.map { |num| num**2 }.sum
puts sum
优化方法:
- 避免中间数组生成:上述代码中
select
和map
方法会生成中间数组。可以通过遍历数组时直接判断并计算平方和来避免这种情况,减少内存开销。
arr = (1..1000).to_a
sum = 0
arr.each do |num|
if num % 3 == 0
sum += num**2
end
end
puts sum
- 使用并行计算:如果计算环境支持并行计算,可以使用
parallel
等并行处理库,将数组分割为多个部分并行计算平方和,最后汇总结果,在多核CPU环境下可显著提升计算速度。但需要注意并行计算带来的资源管理和同步开销。