#12063. 查找交集元素

查找交集元素

✅ Problem: 查找交集元素(存在即输出)


题目描述

给定两个数组 AABB,请你判断数组 BB 中的每个元素是否存在于数组 AA 中。 若存在,则输出该元素,所有存在的元素按** 数组 BB 中的升序顺序** 输出。


输入格式

*第一行包含两个整数 n,mn, m1n,m1051 \leq n, m \leq 10 ^ 5)——数组 AA 和数组 BB 的长度;

  • 第二行 nn 个整数,表示数组 AA 中的元素;
  • 第三行 mm 个整数,表示数组 BB 中的元素。

* *输出格式 * *

  • 一行输出数组 BB 中​ 在数组 AA 中出现的所有元素​​,按升序排列,元素之间用空格隔开;

  • 如果没有任何元素存在,则输出空行。


输入样例

5 4
1 3 5 7 9
2 3 5 8

输出样例

3 5

样例解释

*数组 A 为 {1, 3, 5, 7, 9}

  • 数组 B 为 {2, 3, 5, 8}
  • 其中 3 和 5 出现在 A 中,按 B 中升序排序输出 3 5

✅ 实现提示(C++)

  • 可先对数组 A 和 B 排序;
  • 对 B 中每个元素,在 A 中用 二分查找查找是否存在;
  • 时间复杂度:O((n+m)logn)O((n + m) \log n)