竞赛-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
};

 

posted @ 2022-10-01 14:55  无工时代  阅读(82)  评论(0)    收藏  举报