インタビューに出演しました。1つの質問に行き詰まりました。私は同じことを求めています。
質問: 環状道路が指定されています。その道路にはガソリン ポンプの数が含まれています。各ガソリンポンプにはガソリンの量が与えられています。連続する 2 つのガソリン ポンプ間の距離も表示されます。今、無限の容量の空の燃料タンクを持つ車両が与えられています。アルゴリズムを構築して、車両が後戻りすることなく完全に一周できるようにします。そのような経路が確実に可能であることが示されています。
入力: (int 燃料[]、int 距離[])
出力:車両が環状道路を完全に一周できる場所からのガソリン ポンプ インデックス。
私のアプローチ:
各ガソリン ポンプからチェックし、途中で燃料タンクが空になっている場合は、次のガソリン ポンプに移動します。再度同じプロセスを開始します。このアルゴリズムは O(N^2) を使用します。ここで、N = ガソリン ポンプの数です。
次に、バイナリ検索の概念に移り、複雑さを O(n*logn) に減らします。しかし、私は解決策を結論付けることができませんでした。私はこの解決策を台無しにしました。
次に、その 2 つのガソリン ポンプの中で、左側のガソリンが最大であるガソリン ポンプを選択することで、ある程度の知性を適用しようとします。