题目描述:
    给定两个数组,编写一个函数来计算它们的交集。

    链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/

    思路:
    代码实现:双指针,先对两个数组排序,各种维护一个指针,1. n1==n2切没有添加过就收集;2. n1 != n2, 每次移动较小的指针

    1. class Solution {
    2. public int[] intersection(int[] nums1, int[] nums2) {
    3. Arrays.sort(nums1);
    4. Arrays.sort(nums2);
    5. int n1 = 0,n2 = 0;
    6. List<Integer> res = new ArrayList<Integer>();
    7. while(n1 < nums1.length && n2 < nums2.length) {
    8. int val1 = nums1[n1];
    9. int val2 = nums2[n2];
    10. if (val1 == val2 && !res.contains(val1)) {
    11. res.add(val1);
    12. n1++;
    13. n2++;
    14. } else {
    15. if (val1 > val2) {
    16. n2++;
    17. } else {
    18. n1++;
    19. }
    20. }
    21. }
    22. // 转int[]
    23. int[] intRes = new int[res.size()];
    24. for(int i = 0;i < res.size(); i++) {
    25. intRes[i] = res.get(i);
    26. }
    27. return intRes;
    28. }
    29. }