• 竞赛01. 化学反应


    10月2日上午参加了竞赛,今天先练习下

    题目-01. 化学反应

    实验室内有一些化学反应物,其中的任意两种反应物之间都能发生反应,且质量的消耗量为 1:1

    已知初始 material[i] 表示第 i 种反应物的质量,每次进行实验时,会选出当前 质量最大 的两种反应物进行反应,假设反应物的重量分别为 i 和 j ,且 i <= j。反应的结果如下:

    • 如果 i == j,那么两种化学反应物都将被消耗完;
    • 如果 i < j,那么质量为 i 的反应物将会完全消耗,而质量为 j 的反应物质量变为 j - i 。

    最后,最多只会剩下一种反应物,返回此反应物的质量。如果没有反应物剩下,返回 0

    示例 1:

    输入:[10,2,6,1]
    输出:1
    解释:
    先选出 10 和 6,得到 4,数组转换为 [4,2,1],
    再选出 4 和 2,得到 2,数组转换为 [2,1],
    最后选出 2 和 1,得到 1,最终数组转换为 [1],这就是最后剩下反应物的质量。

    示例 2:

    输入:[6,4,10]
    输出:0
    解释:
    先选出 10 和 6,得到 4,所以数组转换为 [4,4],
    再选出 4 和 4,得到 0,所以数组转换为 []
    因为没有反应物剩下,返回 0。

    /**
     * @param {number[]} material
     * @return {number}
     */
    var lastMaterial = function(material) {
         
        while(material.length>1){
            material.sort(function(p1,p2){return p2-p1})
            const num=material[0]-material[1]
            if(num>0){
               material.splice(0,2,num) 
            }else{
               material.splice(0,2)
            }
            
        }
        return material[0]||0
    };
  • 相关阅读:
    Qt操作xml文件(增删改功能)
    Qt解析xml
    Qt中使用DOM解析XML文件或者字符串二(实例)
    Qt中使用DOM解析XML文件或者字符串(实例)
    QThread 实用技巧、误区----但文档中没有提到
    事件循环与线程 二
    事件循环与线程 一
    第一讲 递归
    Ubuntu 建立桌面快捷方式
    Codeforces554B:Ohana Cleans Up
  • 原文地址:https://www.cnblogs.com/caoke/p/16747207.html
Copyright © 2020-2023  润新知