聞かれました:
リスト内の各数値を残りの要素の合計に置き換えます。リストはソートされません。
のような数字のリストがある場合{2, 7, 1, 3, 8}
、各要素を残りの要素の合計に置き換える必要があるとします。出力は次のようになります。
{(7 + 1 + 3 + 8), (2 + 1 + 3 + 8), (2 + 7 + 3 + 8), (2 + 7 + 1 + 8), (2 + 7 + 1 + 3)}
== {19, 14, 20, 18, 13}
私は明らかな解決策に答えました。
最初sum
にすべての数値を評価し、次に から各要素を減算しsum
ます。したがって、上記のリストsum
は2 + 7 + 1 + 3 + 8
=21
であり、出力は次のようになります。
{sum - 2, sum - 7, sum - 1, sum - 3, sum - 8}
{21 - 2, 21 - 7, 21 - 1, 21 - 3, 21 - 8}
== {19, 14, 20, 18, 13}
リストを 2 回繰り返すだけで済みます。
それからインタビュアーは私に尋ねました:今度は減算なしでそれをしますか?そして私は答えることができませんでした:(
他の解決策は可能ですか?他のトリックを共有できますか?より良いトリックは可能ですか?
追加のメモリ スペースを使用できます (数分間試してみた後で質問しましたが、それでも答えられませんでした)。