1561.あなたが得ることができるコインの最大数
問題解決のアイデア
1つは、トピックを読んだ後の最初の考えは、配列を並べ替えてから、3つの等しい部分に分割することです。1つは、最小ヒープ、中間ヒープ、最大ヒープ、および中間ヒープです。それは最適な解決策ではないことがわかりました。重要な点は、アリスが奪うコインパイルよりも大きいコインパイルがあれば、奪うコインパイルは最大のパイルのコインパイルである可能性があり、ボブは固定されており、常にコインを奪うということです。最小の山。
例3分析例
したがって、並べ替えた後、配列内の要素を降順でトラバースし、一度に2つの要素をトラバースします。小さい方の要素は、このラウンドで取得されたコインの数です。
ループトラバーサルの数はlength / 3です。
問題解決コード
class Solution {
public int maxCoins(int[] piles) {
int result = 0;
int length = piles.length;
int index = length - 2;
int n = length / 3;
Arrays.sort(piles);
while(n > 0) {
result = result + piles[index];
index = index - 2;
n--;
}
return result;
}
}