数组+贪心算法

Problem:

你可以获得的最大硬币数目

思路

用贪心思想考虑,在每一轮操作中,把最大的给Alice,如何把当前数组中次大的给自己,如何把最小的给Bob。以此类推,把数组的最小的三分之一给Bob即可,然后把剩下的交叉给Alice和自己。

Code

class Solution {
    public int maxCoins(int[] piles) {
        //先排序,默认升序
        Arrays.sort(piles);
        int n = piles.length;
        int sum = 0;
        //截取掉低三分之一,然后以步长为2记录自己所获硬币
        for (int i = n / 3; i < n - 1; i += 2) {
            sum += piles[i];
        }
        return sum;
    }
}
posted @ 2025-01-22 23:44  韩熙隐ario  阅读(11)  评论(0)    收藏  举报