通过字典的方式实现

  • 时间复杂度:O (m + n)
  • 空间复杂度:O (m + n)

    1. function intersection(nums1, nums2) {
    2. const map = new Map();
    3. nums1.forEach((m) => {
    4. map.set(m, true);
    5. });
    6. const res = [];
    7. nums2.forEach((n) => {
    8. if (map.get(n)) {
    9. res.push(n);
    10. map.delete(n);
    11. }
    12. });
    13. return res;
    14. }

上方的代码有两层非嵌套的循环,所以时间复杂度是 O (m + n),开辟额外的空间有 mapres 长度受 m n 影响,所以空间复杂度是O (m + n)。