zoukankan      html  css  js  c++  java
  • 分割金条的最小代价


    import java.util.PriorityQueue;

    /**
    * 一块金条切成俩半,需要花费和金条长度数值相等的铜板。
    * 比如{10,20,30}代表金条长度60,三个人分,如果先分成10,50,花费60铜板,再把50分成20,30,花费50铜板,总消费110铜板;
    * 如果先分成30,30,花费60铜板,再把30分成20,10,花费30铜板,总消费90铜板。
    * 输入一个数组,返回分割的最小代价
    */
    public class LessMoneySplitGold {

    public static int lessMoney2(int[] arr) {
    PriorityQueue<Integer> pQ = new PriorityQueue<>();
    for (int i = 0; i < arr.length; i++) {
    pQ.add(arr[i]);
    }
    int sum = 0;
    int cur = 0;
    while (pQ.size() > 1) {
    cur = pQ.poll() + pQ.poll();
    sum += cur;
    pQ.add(cur);
    }
    return sum;
    }

    }

    /* 如有意见或建议,欢迎评论区留言;如发现代码有误,欢迎批评指正 */
  • 相关阅读:
    函数
    registry搭建及镜像管理-harbor
    用户输入和while 循环
    dockerfile
    字典,set
    if 语句
    alpine操作
    循环:列表,元组
    列表
    docker跨主机通信-overlay
  • 原文地址:https://www.cnblogs.com/laydown/p/13060901.html
Copyright © 2011-2022 走看看