极客时间返利平台,你可以在上边通过山月的链接购买课程,并添加我的微信 (shanyue94) 领取返现。
每天晚上九点 B站讲解前端工程化直播,并解答相关问题。

# 实现一个函数 max,找到数组中最大的一个值/两个值/N 个值

Issue

欢迎在 Gtihub Issue 中回答此问题: Issue 647 (opens new window)

求最大的一个值:

function max(list) {
  if (!list.length) {
    return 0;
  }
  return list.reduce((x, y) => (x > y ? x : y));
}

求最大的两个值:

代码见 找出数组中最大的两个值 - codepen (opens new window)

function maxTwo(list) {
  let max = -Infinity,
    secondMax = -Infinity;
  for (const x of list) {
    if (x > max) {
      secondMax = max;
      max = x;
    } else if (x > secondMax) {
      secondMax = x;
    }
  }
  return [max, secondMax];
}

如果求 TopN,可使用大顶堆、小顶堆实现,见另一个问题

Last Updated: 11/27/2021, 10:11:48 AM