【发布时间】:2021-07-24 19:50:47
【问题描述】:
我正在尝试使以下代码更高效,但没有想法,因此寻求一些帮助:
我收到一个区间x 和一个整数数组space,我需要将space 数组分成x 区间的段,例如如果
space = [1, 2, 3, 1, 2]
x = 2
# The intervals Would be
[1, 2][2, 3][3, 1][1, 2]
那么我需要找到每个区间的最小值,然后找到最小值的最大值,所以在上面的示例中,最小值将是:
[1, 2, 1, 1]
然后我需要返回最小值的最大值2
以下是我的解决方案,大多数测试用例都通过了,但其中一些测试用例失败了,因为超出了执行时间。关于如何使以下代码更高效的任何想法?
def segment(x, space)
minimums = {}
space.each_with_index do |_val, index|
# 1 Create the segment
mark = x - 1
break if mark >= space.length
segment = space[index..mark]
x = x + 1
# 2 Find the min of the segment
minimum = segment.min
minimums[index] = minimum
end
# Compare the maximum of the minimums
return minimums.values.max
end
我尝试将 minimums 设为哈希而不是数组,但没有成功。另外我想我会将space 数组转换为哈希并操作哈希而不是数组,但我认为这会更复杂......
【问题讨论】: