Java數(shù)據(jù)結(jié)構(gòu)優(yōu)先隊(duì)列實(shí)練
最后一塊石頭的重量
題目描述

思路詳解
這里采用最大堆進(jìn)行解題。
我們首先考慮,每次拿出兩個(gè)最大的進(jìn)行比較,然后大的減去小的重新放入不就完成了嘛。
首先我們創(chuàng)建一個(gè)優(yōu)先隊(duì)列,遍歷重量,放入隊(duì)列。依次取出重量最大的和第二大的,如果a>b就把a(bǔ)-b重新放入。直到隊(duì)列里面的元素只剩1個(gè)的時(shí)候,輸出結(jié)果。
代碼與結(jié)果
class Solution {
public int lastStoneWeight(int[] stones) {
PriorityQueue<Integer> pq = new PriorityQueue<Integer>((a, b) -> b - a);
for (int stone : stones) {
pq.offer(stone);
}
while (pq.size() > 1) {
int a = pq.poll();
int b = pq.poll();
if (a > b) {
pq.offer(a - b);
}
}
return pq.isEmpty() ? 0 : pq.poll();
}
}
裝滿杯子需要的最短總時(shí)長
題目描述

思路詳解
這個(gè)題也是思考了很久。
分兩種情況:
第一種:很好想,有一種水特別多,那么答案就是這種水的杯數(shù)。
第二種:就是一定可以匹配完成或者匹配到只剩一杯。
我們只需要先排序,在分情況就好。
代碼與結(jié)果
class Solution {
public int fillCups(int[] amount) {
Arrays.sort(amount);
int sum=amount[0]+amount[1]+amount[2];
if(amount[1]+amount[0]>=amount[2]) sum=(sum+1)/2;
else sum=amount[2];
return sum;
}
}
移除石子的最大得分
題目描述

思路詳解
本題的思路看起來簡單,也不是很好想。
我們先排一下序,兩種情況:
第一種:前兩個(gè)的和小于第三個(gè),這時(shí)候我們一直拿最后一堆和任意一堆,結(jié)果就是a+b。
第二種: 前兩個(gè)數(shù)的和大于第三個(gè)數(shù),那么前兩堆一定可以內(nèi)部抵消一部分。只需總和除以2就好。
代碼與結(jié)果
class Solution {
public int maximumScore(int a, int b, int c) {
int[] arr = new int[] { a, b, c };
Arrays.sort(arr);
a = arr[0];
b = arr[1];
c = arr[2];
if (a + b <= c) {
return a + b;
} else {
return (a + b + c) / 2;
}
}
}
到此這篇關(guān)于Java數(shù)據(jù)結(jié)構(gòu)優(yōu)先隊(duì)列實(shí)練的文章就介紹到這了,更多相關(guān)Java優(yōu)先隊(duì)列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Java實(shí)現(xiàn)將ppt轉(zhuǎn)換為文本
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)將ppt轉(zhuǎn)換為文本,文中的示例代碼簡潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-01-01
IntelliJ IDEA下SpringBoot如何指定某一個(gè)配置文件啟動項(xiàng)目
這篇文章主要介紹了IntelliJ IDEA下SpringBoot如何指定某一個(gè)配置文件啟動項(xiàng)目問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
SpringMVC用JsonSerialize日期轉(zhuǎn)換方法
下面小編就為大家?guī)硪黄猄pringMVC用JsonSerialize日期轉(zhuǎn)換方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起 小編過來看看吧2016-11-11
Mybatis映射文件根標(biāo)簽與子標(biāo)簽示例講解
這篇文章主要介紹了Mybatis映射文件根標(biāo)簽與子標(biāo)簽,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
java WebSocket的實(shí)現(xiàn)以及Spring WebSocket示例代碼
使用java實(shí)現(xiàn)LIS算法,出操隊(duì)形的問題
Mybatis中SqlSession接口中selectList方法詳解

