gpt4 book ai didi

Ruby - 查找子数组索引

转载 作者:数据小太阳 更新时间:2023-10-29 07:39:33 26 4
gpt4 key购买 nike

我在寻找提取子数组索引的方法时遇到问题。

问题:从一个原始数组中找到具有最大值的子数组。

我的解决方案:找到正确的数组,但返回数组中的值。

我需要:max子数组的起始索引和结束索引;示例:[2, 4]

我的代码:

def max_subarr(arr)
(0...arr.length).inject([arr.first]) do |max_sub, i|
(i...arr.length).each do |x|
if max_sub.inject(:+) < arr[i..x].inject(:+)
max_sub = arr[i..x]
end
end
max_sub
end
end

非常感谢任何帮助 - 请简要说明我做错了什么。我知道 max_sub 返回 arr[i..x] 的值,但我一辈子都不能只返回 max_sub[i]max_sub[x]

最佳答案

你想这样做:

indexes_arr = [2, 4]
range = Range.new(*indexes_arr)
arr[range]

已编辑:

为了在您的代码中获取索引,您需要在每次找到更大的子数组时保存它们。

这是您编辑的代码:

def max_subarr(arr)
start_index, end_index = 0, 0
(0...arr.length).inject([arr.first]) do |max_sub, i|
(i...arr.length).each do |x|
if max_sub.inject(:+) < arr[i..x].inject(:+)
max_sub = arr[i..x]
start_index, end_index = i, x
end
end
max_sub
end
return [start_index, end_index]
end



max_subarr([98, -99, 198, -2, 950])
=> [2,4]

关于Ruby - 查找子数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21733853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com