zoukankan      html  css  js  c++  java
  • 1753. Maximum Score From Removing Stones

    package LeetCode_1753
    
    /**
     * 1753. Maximum Score From Removing Stones
     * https://leetcode.com/problems/maximum-score-from-removing-stones/
     * You are playing a solitaire game with three piles of stones of sizes a​​​​​​, b,​​​​​​ and c​​​​​​ respectively.
     * Each turn you choose two different non-empty piles, take one stone from each, and add 1 point to your score.
     * The game stops when there are fewer than two non-empty piles (meaning there are no more available moves).
    Given three integers a​​​​​, b,​​​​​ and c​​​​​, return the maximum score you can get.
    
    Example 1:
    Input: a = 2, b = 4, c = 6
    Output: 6
    Explanation: The starting state is (2, 4, 6). One optimal set of moves is:
    - Take from 1st and 3rd piles, state is now (1, 4, 5)
    - Take from 1st and 3rd piles, state is now (0, 4, 4)
    - Take from 2nd and 3rd piles, state is now (0, 3, 3)
    - Take from 2nd and 3rd piles, state is now (0, 2, 2)
    - Take from 2nd and 3rd piles, state is now (0, 1, 1)
    - Take from 2nd and 3rd piles, state is now (0, 0, 0)
    There are fewer than two non-empty piles, so the game ends. Total: 6 points.
    
    Example 2:
    Input: a = 4, b = 4, c = 6
    Output: 7
    Explanation: The starting state is (4, 4, 6). One optimal set of moves is:
    - Take from 1st and 2nd piles, state is now (3, 3, 6)
    - Take from 1st and 3rd piles, state is now (2, 3, 5)
    - Take from 1st and 3rd piles, state is now (1, 3, 4)
    - Take from 1st and 3rd piles, state is now (0, 3, 3)
    - Take from 2nd and 3rd piles, state is now (0, 2, 2)
    - Take from 2nd and 3rd piles, state is now (0, 1, 1)
    - Take from 2nd and 3rd piles, state is now (0, 0, 0)
    There are fewer than two non-empty piles, so the game ends. Total: 7 points.
    
    Example 3:
    Input: a = 1, b = 8, c = 8
    Output: 8
    Explanation: One optimal set of moves is to take from the 2nd and 3rd piles for 8 turns until they are empty.
    After that, there are fewer than two non-empty piles, so the game ends.
    
    Constraints:
    1 <= a, b, c <= 10^5
     * */
    class Solution {
        /*
        * solution: greedy to keep decreasing 2 biggest number until 0,
        * Time:O(max(a,b,c)), Space:O(1)
        * */
        fun maximumScore(a: Int, b: Int, c: Int): Int {
            val nums = intArrayOf(a, b, c)
            nums.sort()
            var result = 0
            while ((nums[0] > 0 && nums[1] > 0) || (nums[0] > 0 && nums[2] > 0) || (nums[1] > 0 && nums[2] > 0)) {
                result++
                nums[1]--
                nums[2]--
                nums.sort()
            }
            return result
        }
    }
  • 相关阅读:
    这些年学过的FPGA
    基于SoCkit的opencl实验1-基础例程
    基于8051内核的实验—流水灯
    8051内核的使用
    基于FPGA的电压表与串口通信(下)
    基于FPGA的电压表与串口通信(上)
    基于FPGA的通信信号源的设计
    基于DDS的任意波形发生器
    基于FPGA的通信系统实验
    进程间通信三(共享内存)
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14384735.html
Copyright © 2011-2022 走看看