我有两个具有相同大小的数字数组。如何判断第二个数组中是否有任何元素大于给定索引处的第一个数组?通过这个例子:
a = [2, 8, 10]
b = [3, 7, 5]
位置3
的 2
大于0
。但是在下面:
a = [1, 10]
b = [0, 8]
没有这样的元素。在索引0
,0
不大于1
,在索引1
,8
不大于10
。
答案 0 :(得分:5)
试试这个
a.each_with_index.any? { |item, index| b[index] > item }
答案 1 :(得分:4)
无需索引。只需将它们配对并检查每一对。
b.zip(a).any? { |x, y| x > y }
=> true or false
一个棘手的问题:检查每个位置是否a
是最大值:
a.zip(b).map(&:max) != a
=> true or false
非常有效的(时间和空间):
b.zip(a) { |x, y| break true if x > y }
=> true or nil
(如果您需要true
/ false
(通常不会,例如在if
- 条件中),您可以添加!!
或追加{{1 }})
答案 2 :(得分:0)
如果b
中的某个数字大于给定索引中a
中的数字,则会返回b
中的数字。如果b
中的数字不大,则会返回nil
。
b.detect.with_index { |n, index| n > a[index] }
例如,如果您有以下数组。
a = [3, 4, 5]
b = [6, 7, 8]
您将获得6
的返回值。