【发布时间】:2021-01-05 17:57:25
【问题描述】:
在使用 Ruby .uniq 方法甚至 .to_set 时,您将如何改变数组的顺序或保持数组的自然顺序?
例如:
([3,4,4,3,6,3]) # => [4,6,3])
### with current method my solution outputs:
Expected: [4, 6, 3], instead got: [3, 4, 6]
这些是我迄今为止尝试过的所有其他方法:
def solve arr
#arr.each do |charas| arr << charas unless arr.include?(charas)
#end
arr.to_set.to_a
# arr.uniq
# arr & arr
# arr.to_set
end
示例测试:
(solve([3,4,4,3,6,3]),[4,6,3])
Test.assert_equals(solve([1,2,1,2,1,2,3]),[1,2,3])
Test.assert_equals(solve([1,2,3,4]),[1,2,3,4])
Test.assert_equals(solve([1,1,4,5,1,2,1]),[4,5,2,1])
【问题讨论】:
-
你为什么期望
4出现在3之前? -
因为这是数组的原始顺序,也是通过测试的要求。
-
我在“数组的原始顺序”中看到
4之前的3和4之前的3,所以你得到的结果非常好。 -
我怀疑很多读者理解你的问题。我花了很长时间才弄清楚,我仍然可能是错的。请告诉我我在回答中给出的解释是否正确。无论如何,您需要编辑您的问题以澄清。我还建议您删除对
.to_set的引用,这只会使事情变得混乱。