leetcode

我的 leetcode 题解(JavaScript)


/**
 * @param {number[][]} people
 * @return {number[][]}
 */
// 桶排序的思想,以及在评论区看到一句很有道理的概括 (矮子插队无所谓,反正高个子看不到), 思路就是先给高个子排队,然后矮个子插队

const reconstructQueue1 = function (people) {
  const len = people.length;
  let peopleSort = [], res = [];
  for (let i = 0; i < len; ++i) {
    if (peopleSort[people[i][0]]) {
      peopleSort[people[i][0]].push(people[i][1]);
    } else {
      peopleSort[people[i][0]] = [people[i][1]];
    }
  }
  let peopleSortLen = peopleSort.length, i = 0;
  while (peopleSortLen-- > 0) {
    if (peopleSort[peopleSortLen]) {
      peopleSort[peopleSortLen].sort((a, b) => a - b)
      let peopleSortValueLen = peopleSort[peopleSortLen].length;
      for (let j = 0; j < peopleSortValueLen; ++j) {
        res.splice(peopleSort[peopleSortLen][j], 0, [peopleSortLen, peopleSort[peopleSortLen][j]]);
        ++i;
      }
    }
  }
  return res;
  console.log(res);
  console.log(peopleSort);
};