leetcode

我的 leetcode 题解(JavaScript)


看到排名靠前的人都选择了用排序的api来找最大的两个数…再一看题,就三十个数字,自己这么找这俩最大数是真的蠢

/**
 * @param {number[]} stones
 * @return {number}
 */
const lastStoneWeight = function (stones) {
  let array = stones;
  let max1 = -1,
    max2 = -1,
    max1Index = 0,
    max2Index = 0,
    difference = 0;
  while (array.length !== 1) {
    for (let i = 0; i < array.length; i++) {
      if (array[i] > max1) {
        max1Index = i;
        max1 = array[i];
      }
    }
    for (let i = 0; i < array.length; i++) {
      if (array[i] > max2 && i !== max1Index) {
        max2Index = i;
        max2 = array[i];
      }
    }
    difference = array[max1Index] - array[max2Index];
    if (difference) {
      array.push(difference);
    }
    if (array.length === 2) {
      return 0;
    }
    if (max1Index > max2Index) {
      array.splice(max1Index, 1);
      array.splice(max2Index, 1);
    } else {
      array.splice(max2Index, 1);
      array.splice(max1Index, 1);
    }
    max1 = -1;
    max2 = -1;
  }
  return array[0];
};