class solution
//如果當前餘下的汽油不足以跑到這個加油站
while (curpos + gasleft < curstationpos)
//那麼著找出之前加油最多的油來加
//把最多的油加上去
gasleft += q.top();
q.pop();
addgastimes ++;
}//向前開的過程中肯定存在油量的消耗
const int gascost = curstationpos - curpos;
gasleft -= gascost;
//把這個加油站的油放入佇列中
//但是並不代表加到車裡了 知識作為儲備用油存到佇列裡
if (curstationgas > 0)
//過了這個站
i++;
//更新當前車輛的位置
curpos = curstationpos;
}return curpos + gasleft >= target? addgastimes : -1;
}};
複雜度分析:最差情況下,需要把所有的油都收集起來,此時所有的油都需要有 push 操作,所以時間複雜度為o(nlgn),而空間複雜度為o(n)。
題目
871 最低加油次數
汽車從起點出發駛向目的地,該目的地位於出發位置東面target英里處。沿途有加油站,每個station i 代表乙個加油站,它位於出發位置東面station i 0 英里處,並且有station i 1 公升汽油。假設汽車油箱的容量是無限的,其中最初有startfuel公升燃料。它每行駛 1 英里就...
871 最低加油次數
汽車從起點出發駛向目的地,該目的地位於出發位置東面 target 英里處。沿途有加油站,每個 station i 代表乙個加油站,它位於出發位置東面 station i 0 英里處,並且有 station i 1 公升汽油。假設汽車油箱的容量是無限的,其中最初有 startfuel 公升燃料。它每行...
871 最低加油次數
汽車從起點出發駛向目的地,該目的地位於出發位置東面target英里處。沿途有加油站,每個station i 代表乙個加油站,它位於出發位置東面station i 0 英里處,並且有station i 1 公升汽油。假設汽車油箱的容量是無限的,其中最初有startfuel公升燃料。它每行駛 1 英里就...