C/C++教程

LeetCode 349. 两个数组的交集

本文主要是介绍LeetCode 349. 两个数组的交集,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

 

 

import java.util.*;
import java.util.stream.Collectors;

public class LC349 {
    //运用流的一种解法
    public int[] intersection1(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> resultSet = new HashSet<>();
        set1.addAll(Arrays.stream(nums1).boxed().collect(Collectors.toList()));
        for (int i = 0; i < nums2.length; i++) {
            if (set1.contains(nums2[i])) {
                resultSet.add(nums2[i]);
            }
        }
        return resultSet.stream().mapToInt(Integer::intValue).toArray();
    }

    //运用数组的一种解法
    public int[] intersection(int[] nums1, int[] nums2) {
        int[] nums = new int[1003];
        for (int i = 0; i < nums1.length; i++) {
            nums[nums1[i]]++;
        }
        for (int i = 0; i < nums2.length; i++) {
            if (nums[nums2[i]] > 0) {
                nums[nums2[i]] = -1;
            }
        }
        Set<Integer> result = new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == -1) {
                result.add(i);
            }
        }
        return result.stream().mapToInt(Integer::intValue).toArray();
    }

    public static void main(String[] args) {
        int[] nums1 = new int[]{4, 9, 5};
        int[] nums2 = new int[]{9, 4, 9, 8, 4};
        LC349 lc349 = new LC349();
        lc349.intersection(nums1, nums2);
    }
}
这篇关于LeetCode 349. 两个数组的交集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!