剩下最後的石頭
有一堆石頭,每塊石頭的重量都是正整數。
每一回合,從中選出兩塊 最重的 石頭,然後將它們一起粉碎。假設石頭的重量分別為 x 和 y,且 x <= y。那麼粉碎的可能結果如下:
如果 x == y,那麼兩塊石頭都會被完全粉碎;
如果 x != y,那麼重量為 x 的石頭將會完全粉碎,而重量為 y 的石頭新重量為 y-x。
最後,最多隻會剩下一塊石頭。返回此石頭的重量。如果沒有石頭剩下,就返回 0。
連結:https://leetcode-cn.com/problems/last-stone-weight
思路 :建立大根堆(利用比較器重寫優先順序佇列的規則) ,然後每次依照題目的處理辦法對堆頂和堆第二個元素進行處理,
注意:return queue.size()==1 ? queue.peek() : 0;
class Solution {
public int lastStoneWeight(int[] stones) {
if (stones.length==0) return -1;
Queue queue = new PriorityQueue<>(new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
for (int i = 0; i < stones.length; i++) {
queue.offer(stones[i]);
}
while (queue.size() > 1){
int tmp = queue.poll();
if (queue.isEmpty()) return tmp;
if (tmp == queue.peek()){
queue.poll();
}else if (tmp > queue.peek()){
queue.offer(tmp-queue.poll());
}
}
return queue.size()==1 ? queue.peek() : 0;
}
}
相關文章
- 1046. 最後一塊石頭的重量
- 【每日一題】力扣1046.最後一塊石頭的重量每日一題力扣
- Day 38 | 1049. 最後一塊石頭的重量 II 、494. 目標和 、474.一和零
- leetcode 771. 寶石與石頭LeetCode
- JZ-046-圓圈中最後剩下的數
- 30歲後,你還剩下什麼?
- 合併石頭的最低成本
- 石頭科技的增長焦慮
- 【leetcode】(每日一題 771 寶石與石頭)LeetCode每日一題
- Leetcode#771.Jewels and Stones(寶石與石頭)LeetCode
- 剪刀石頭布程式(Python)Python
- LeetCode每日一題: 寶石與石頭(No.771)LeetCode每日一題
- 程式碼隨想錄day36 || 1049 最後一筐石頭重量||, 494 目標和,474 一和零
- Python剪刀石頭布遊戲Python遊戲
- [每日一題] 第四題:圓圈中最後剩下的數字每日一題
- python力扣刷題記錄——771. 寶石與石頭Python力扣
- 石頭科技財報:2024年Q1石頭科技營收18.41億元 同比增長58.69%營收
- 程式碼隨想錄演算法訓練營 | 1049. 最後一塊石頭的重量 II,494. 目標和,474.一和零演算法
- 2-66. 製作石頭和稻草的粒子特效特效
- 探索汪洋大海 末世生存遊戲《最後的木頭》開放試玩遊戲
- 最後的記錄
- 最愛吃的菜,‘最後的記憶’。
- 約瑟夫環(超好的程式碼存檔)--19--約瑟夫環--LeetCode面試題62(圓圈最後剩下的數字)LeetCode面試題
- 程式碼日:剪刀石頭布 (RPS) 專案
- 程式碼隨想錄演算法訓練營第42天 | 1049. 最後一塊石頭的重量 II 、494. 目標和 、474.一和零演算法
- 《Head First 設計模式》:剩下的模式設計模式
- 【貪心】【二分】[NOIP2015]跳石頭
- 小熊飛槳練習冊-03石頭剪刀布
- 30年後,《重灌機兵》裡怎麼只剩下了一隻狗?
- 打造海上堡壘 海洋求生遊戲《最後的木頭》8月23日正式發售遊戲
- MySQL鎖這塊石頭似乎沒有我想的那麼重MySql
- webform 最後的黃昏之力WebORM
- 2020的最後一天
- 【一天一大 lee】寶石與石頭 (難度:簡單) - Day20201002
- 藍橋杯-跳石頭(二分法)
- 結對-遊戲《石頭剪刀布》-專案進度遊戲
- 遊俠區塊鏈11月5日分析:多頭進入風險帶,最後的晚餐區塊鏈
- 1:2,李世石最後一戰被AI擊敗,唯一戰勝過AlphaGo的人退役了AIGo