関数をサポートするプログラミング言語を使用して、関数を持っている
is_enough(strArr)
そのテイクstrArr
以下の要素からなる配列であろう。
N
これは循環ルートのガソリンスタンドの数になります- 後続の各要素は文字列
g:c
に なりますg
そのガソリンスタンドでのガロン単位のガス量であり、c
次のガソリンスタンドに行くのに必要なガロンのガスの量になります。
たとえば、次のようにstrArr
なります。
["4","3:1","2:2","1:2","0:1"].
あなたの目標は、ルート全体を1度移動できる開始ガソリンスタンドのインデックスを返すことです。それ以外の場合は、文字列"impossible"を返します。
上記の例では4つのガソリンスタンドがあり、次の理由により、プログラムは文字列「1」を返す必要があります。
駅から始まる1あなたが受け取る3ガスのガロンをして過ごす1を次のステーションになって。
次に、あなたが持っている2ガロン+ 2次の駅でより多くを、あなたが過ごす2をあなたは持っているので、2サード駅に着くときガロン。
その後、3つありますが、最後の駅まで2つ費やします。
最終ステーションでは0ガロンを受け取り、最終ガロンを出発点に到達させます。
他のガソリンスタンドから出発すると、ルートを回避できなくなるため、答えは"1"です。
開始可能なガソリンスタンドが複数ある場合は、(ガソリンスタンドの)最小のインデックスを返します。N
になります>= 2
。
正しいサンプル出力:
Input: ["4","1:1","2:2","1:2","0:1"]
Output: "impossible"
Input: ["4","0:1","2:2","1:2","3:1"]
Output: "4"
勝者は長くなりますが、最短のコードを使用する人になります。
N+1
な要素がありstrArr
ますか?N
言語が配列の長さを取得する方法をすでに提供している場合、これは冗長になりますか?(ただし、Cなどでも便利です)
is_enough
(9文字)が必要と解釈しています。3つは単一文字の名前を使用しており、1つは関数にまったく名前を付けていません。何が許されるかを明確にしていただけませんか?