MST

星途 面试题库

面试题:Ruby哈希与数组复杂操作及性能优化

给定一个大型数组`large_array = (1..10000).to_a`,和一个哈希`mapping_hash = { odd: :odd_number, even: :even_number }`。要求通过遍历数组,根据数字的奇偶性,将其分类放入两个不同的数组中,放入的数组名称由`mapping_hash`中对应键的值来动态决定。请写出高效的Ruby代码实现,并简要说明你是如何考虑性能优化的。
37.4万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
large_array = (1..10000).to_a
mapping_hash = { odd: :odd_number, even: :even_number }

result = {}
mapping_hash.each do |key, value|
  result[value] = []
end

large_array.each do |num|
  key = num.odd?? mapping_hash[:odd] : mapping_hash[:even]
  result[key] << num
end

p result

性能优化考虑

  1. 减少重复计算:通过一次遍历数组,减少多次扫描带来的时间开销。
  2. 空间预分配:预先初始化结果哈希表中的数组,避免在循环中频繁创建新数组带来的性能损耗。这样在每次向数组中添加元素时,不需要每次都为数组分配新的内存空间。