当前位置:网站首页>LeetCode 1561. The maximum number of coins you can get

LeetCode 1561. The maximum number of coins you can get

2022-07-06 16:42:00 Daylight629

1561. The maximum number of coins you can get

Yes 3n A pile of coins in different numbers , You and your friends are going to divide coins in the following way :

  • In every round , You will choose arbitrarily 3 Pile coins ( Not necessarily continuous ).
  • Alice The pile with the largest number of coins will be taken away .
  • You will take away the pile with the second largest number of coins .
  • Bob Will take the last pile .
  • Repeat the process , Until there are no more coins .

Give you an array of integers piles , among piles[i] It's No i The number of coins in the pile .

Returns the maximum number of coins you can get .

Example 1:

 Input :piles = [2,4,1,2,7,8]
 Output :9
 explain : elect  (2, 7, 8) ,Alice  Take away  8  The pile of coins , You take it  7  The pile of coins ,Bob  Take the last pile .
 elect  (1, 2, 4) , Alice  Take away  4  The pile of coins , You take it  2  The pile of coins ,Bob  Take the last pile .
 The maximum number of coins you can get :7 + 2 = 9.
 Consider the other case , If you choose  (1, 2, 8)  and  (2, 4, 7) , You can only get  2 + 4 = 6  Coin , This is not the optimal solution .

Example 2:

 Input :piles = [2,4,5]
 Output :4

Example 3:

 Input :piles = [9,8,7,6,5,1,2,3,4]
 Output :18

Tips :

  • 3 <= piles.length <= 10^5
  • piles.length % 3 == 0
  • 1 <= piles[i] <= 10^4

Two 、 Method 1

greedy , By sorting , Ahead 1/3 All are Bob Of , We reverse the order , Take the second largest pile

class Solution {
    
    public int maxCoins(int[] piles) {
    
        Arrays.sort(piles);
        int round = piles.length / 3;
        int idx = piles.length - 2;
        int res = 0;
        for (int i = 0; i < round; i++) {
    
            res += piles[idx];
            idx -= 2;
        }
        return res;
    }
}

Complexity analysis

  • Time complexity :O(nlogn), among nn Is the length of the array divided by 3( That is, the length of the array is 3n). The time complexity of sorting is O(3nlog3n)=O(3n(log3+logn))=O(nlogn), The time complexity of traversing the array to calculate the maximum number of coins is O(n), So the total time complexity is O(nlogn).

  • Spatial complexity :O(logn).

原网站

版权声明
本文为[Daylight629]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202131315404260.html