gpt4 book ai didi

ruby - 检查哈希键是否存在于 Ruby 的每个迭代器中

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:43 24 4
gpt4 key购买 nike

在 Ruby 中使用 2 求和算法。

我已经启动了一个哈希 t,然后在每个迭代器中我试图检查 t 中是否存在一个键。出于某种原因,if 语句似乎永远不会将 t[target-n] 评估为 true if,尽管我将它添加到 else 部分。

def two_sum(nums, target)
t={}
a=[]
nums.each do |n|
if t[target-n]
a << nums.index(n)
a << nums.index(t[target-n])
return a
else
t[target-n] = n
end
end
end

最佳答案

如果您在循环开始时打印此调试行 p "#{target-n}, #{t}",您可以找出原因。

...
nums.each do |n|
p "#{target-n}, #{t}"
...

使用这个调用 two_sum([3, 5, 2, -4, 8, 11], 7) 你得到打印:

# "4, {}"
# "2, {4=>3}"
# "5, {4=>3, 2=>5}"
# "11, {4=>3, 2=>5, 5=>2}"
# "-1, {4=>3, 2=>5, 5=>2, 11=>-4}"
# "-4, {4=>3, 2=>5, 5=>2, 11=>-4, -1=>8}"

如您所见,您要查找的 key 由代码的 else 部分添加。

一个可能的选择(蛮力)是建立对的散列,跳过重复的对。如果 nums 中的每个对,则遍历填充数组 a 的散列。

最后调用方法返回的a

def two_sum(nums, target)
t={}
a=[]
nums.each do |n|
t[target-n] = n unless t[n]
end
t.each { |k,v| a << [k,v] if nums.include? k }
a
end

关于ruby - 检查哈希键是否存在于 Ruby 的每个迭代器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55076890/

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