Ruby 数组一次访问 2 个连续(链接)元素

Posted

技术标签:

【中文标题】Ruby 数组一次访问 2 个连续(链接)元素【英文标题】:Ruby array access 2 consecutive(chained) elements at a time 【发布时间】:2013-03-18 21:55:45 【问题描述】:

现在,这是数组,

[1,2,3,4,5,6,7,8,9]

我想要,

[1,2],[2,3],[3,4] upto [8,9]

当我这样做时,我得到 each_slice(2),

[[1,2],[3,4]..[8,9]]

我目前正在这样做,

arr.each_with_index do |i,j|
  p [i,arr[j+1]].compact #During your arr.size is a odd number, remove nil.
end

有没有更好的办法??

【问题讨论】:

Is there an algorithm to extract values in duets from an array and operate over them?的可能重复 【参考方案1】:

Ruby 能读懂你的想法。您想要缺点执行元素吗?

[1, 2, 3, 4, 5, 6, 7, 8, 9].each_cons(2).to_a
# => [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9]]

【讨论】:

【参考方案2】:

.each_cons 完全符合您的要求。

[1] pry(main)> a = [1,2,3,4,5,6,7,8,9]
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
[2] pry(main)> a.each_cons(2).to_a
=> [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9]]

【讨论】:

【参考方案3】:

你几乎是对的 :)

arr = [1,2,3,4,5,6,7,8,9]
arr.each_cons(2) do |chunk|
  p chunk
end
# >> [1, 2]
# >> [2, 3]
# >> [3, 4]
# >> [4, 5]
# >> [5, 6]
# >> [6, 7]
# >> [7, 8]
# >> [8, 9]

【讨论】:

【参考方案4】:

如果你想实现自己的each_cons

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
cons = 2

0.upto(arr.size - cons) do |i|
  p arr[i, cons]
end

输出:

[1, 2]
[2, 3]
[3, 4]
[4, 5]
[5, 6]
[6, 7]
[7, 8]
[8, 9]

【讨论】:

以上是关于Ruby 数组一次访问 2 个连续(链接)元素的主要内容,如果未能解决你的问题,请参考以下文章

力扣P525. 连续数组P523. 连续的子数组和

集合总结

leetcode 最大子序和 动态规划

java连续最大和统计回文

把鼠标移动到按钮并点击时,一次除了那几个时间

数组链表list容器vector setstackqueue