このアルゴリズムは、carListに順序付けされた型のフリーカーがあるかどうか、orderListの各注文をチェックする必要があります。すべての注文をチェックする実行時間はどのくらいですか?
ご注文には、ご希望の車種と、ピックアップおよび返品時間が含まれています。今、私はこれがO(nlog(n) + k)
で実行できるかどうか調べるために立ち往生しています。ここで、kは異なる車種の数を示します。
public static boolean CheckAllOrder(List orderList, List carList) {
int count = 0;
for (int i = 0; i < orderList.size(); i++) {
int type = orderList.get(i).type;
long start = orderList.get(i).start;
long end = orderList.get(i).end;
for (int j = 0; j < carList.size(); j++) {
Car currentCar = carList.get(j);
if (currentCar.type == type) {
if (currentCar.occTil == 0 && currentCar.occSince == 0) {
currentCar.occSince = start;
currentCar.occTil = end;
count++;
break;
} else if (currentCar.occTil < start) {
currentCar.occTil = end;
count++;
break;
} else if (currentCar.occSince > end) {
currentCar.occSince = start;
count++;
break;
}
}
}
}
if (count == orderList.size()) {
return true;
} else {
return false;
}
}
私は自分のコードをテストしなかったし、それだけで正常に動作するようです。 私は車のタイプについてハッシュ関数を使うことを考えました。したがって、私はハッシュテーブルの各リストに同じタイプの車しか入っていない小さなリストを1つ走らせるだけです。少なくともこれは私の考えです。
Here's問題声明:私はすべての注文を処理できるかどうかを確認する必要がk個の異なる車のタイプとn注文 を持っています
は、順不同できない意味there'sを行うことができます。これは、指定されたタイプの車がまだ無料になっていないことが原因です。注文には、すでに述べたように、希望する車種、ピックアップ、および戻り時間が含まれています。
どうすれば解決できますか?
を私は、各車型のために正確に一台の車が利用可能であると仮定しますか?それで問題は次のように再公式化することができます:各車種のための時間内の任意の瞬間に、その車種のせいぜい1つの注文があります。 – gogognome
order nlog(n)は、quicksortまたはmergesortを使って何かをソートすることを示唆しています。開始時に注文をソートした場合はどうなりますか? – gogognome
各車種にx台があります – Sartharon