これはかなり一般的な質問のようです。悲しいことに、私はそれをSOで見つけることができませんでした。これが重複する質問の場合。申し訳ありません。
私が2つの整数配列を持っているA
としましょうB
:
A = [17, 3, 9, 11, 11, 15, 2]
B = [1, 13]
A
配列のいずれかの要素が配列のどの要素よりも小さい場合は、trueまたはfalseを返す必要があります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?
ですが、意味がありませんでした。