class solution
priority_queueq;
int qsum = 0;
int lastpos = 0;
int preheight = heights[0];
for (int i =0; i < heights.size(); i++) else
//看過一番處理後還是不能跳到這個位置
if (qsum <= bricks) else
}//更新位置的高度
preheight = curheight;
}return lastpos;
}};
複雜度分析:在跳躍的過程中,最差的情況下,我們需要把所有的高度差記錄下來。在這種情況下,每個高度差都需要執行 push 操作。那麼時間複雜度為 o(nlgn),空間複雜度為o(n)。
【小結】
需要將消耗的過程,轉換為儲存的過程(記錄在小本子上),對應堆的 push;
需要優先消除一些元素,對應堆的 pop
鏈結
leetcode1642 可以到達的最遠建築
給你乙個整數陣列 heights 表示建築物的高度。另有一些磚塊 bricks 和梯子 ladders 你從建築物 0 開始旅程,不斷向後面的建築物移動,期間可能會用到磚塊或梯子。當從建築物 i 移動到建築物 i 1 下標 從 0 開始 時 如果當前建築物的高度 大於或等於 下一建築物的高度,則不需...
LeetCode 5556 可以到達的最遠建築
給你乙個整數陣列 heights 表示建築物的高度。另有一些磚塊 bricks 和梯子 ladders 你從建築物 0 開始旅程,不斷向後面的建築物移動,期間可能會用到磚塊或梯子。當從建築物 i 移動到建築物 i 1 下標 從 0 開始 時 如果當前建築物的高度 大於或等於 下一建築物的高度,則不需...
求樹上每個節點可以走到的最遠距離
給定一棵樹,樹中包含 n 個結點 編號1 n 和 n 1 條無向邊,每條邊都有乙個權值。請你在樹中找到乙個點,使得該點到樹中其他結點的最遠距離最近。輸入格式 第一行包含整數 n。接下來 n 1 行,每行包含三個整數 ai,bi,ci,表示點 ai 和 bi 之間存在一條權值為 ci 的邊。輸出格式 ...