【发布时间】:2012-04-05 02:58:24
【问题描述】:
这似乎是一个很常见的问题。可悲的是,我在 SO 上找不到它。如果这是一个重复的问题;我为此道歉。
假设我有两个整数数组A 和B:
A = [17, 3, 9, 11, 11, 15, 2]
B = [1, 13]
如果数组A 的任何元素小于数组B 的任何元素,我需要返回真或假。
最简单的方法是每个循环使用 2 个(O(n^2) 复杂度)
def is_greater?(a,b)
retVal = false
b.each { |element|
a.each { |value|
if (value < element)
retVal = true
break
end
}
}
return retVal
end
is_greater?(A,B) => true
我还整理了两个数组中的元素,然后用一个while循环判断A中的元素是否小于B中的元素。
A.sort!
B.sort!
def is_greater?(a,b)
retVal = false
i = 0
j = 0
while (i < a.length && j < b.length)
if (a[i] < b[j])
retVal = true
break
elsif (a[i] == b[j])
i = i + 1
j = j + 1
else
j = j + 1
end
end
return retVal
end
is_greater?(A,B) => true
我想知道在代码行数方面是否有一种高效、精确的方法。我试图弄清楚如何使用 any? 块,但这对我来说没有任何意义。
【问题讨论】:
标签: ruby