タイトルには、合計がターゲット整数に等しい2つの要素があります。私はすでに以下のソリューションを試しましたが、これはユニークな整数に対してのみ機能します。重複する値になると問題が発生します。もちろん、2つの別々のインデックスを追跡している複数のループを使用することができます。このように、2つのインデックスが同じであることを確認してください。しかし、私は1つの反復でこれを解決する方法があるかどうかを見たいと思っていました。整数とターゲットの配列が与えられている場合、2つの要素の合計がターゲットになる場合はtrueを返します。
two_sum([1,2,3,4,5,6], 8) = true
two_sum([4,4], 8) = false
def two_sum(array, target)
idx = 0
while idx < array.length
complement = target - array[idx]
if array.include?(complement) && complement != array[idx]
return true
end
idx+=1
end
return false
end
'array.combination(2).any? {| a、b | a + b == target} ' – steenslag
私は' array.combination(2).find {| a、b | a + b == target} 'は、目的のペアまたは' nil'のいずれかを返します。編集:エガド! @steenslagは、同じブロック変数であっても、私がやった1分前とほぼ同じコメントを投稿しました!私は希望のペアが求められているので、 'find'は' any'より優先されると思います。 –
@CarySwovelandヘッダーから: "... 2つの要素のいずれかがターゲットになるとtrueを返します"。 – steenslag