java 349.两个阵列的交叉点(#).java

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 349.两个阵列的交叉点(#).java相关的知识,希望对你有一定的参考价值。

public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set = new HashSet<>();
        Set<Integer> intersect = new HashSet<>();
        for (int i = 0; i < nums1.length; i++) {
            set.add(nums1[i]);
        }
        for (int i = 0; i < nums2.length; i++) {
            if (set.contains(nums2[i])) {
                intersect.add(nums2[i]);
            }
        }
        int[] result = new int[intersect.size()];
        int i = 0;
        for (Integer num : intersect) {
            result[i++] = num;
        }
        return result;
    }
}
public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
	    if (nums1.length==0 || nums2.length==0)
             return new int[0];
        int[] result =  new int[nums1.length>nums2.length?nums2.length:nums1.length];

        Arrays.sort(nums1);
        Arrays.sort(nums2);

        int i=0,j=0,k=0; // pointer in the array, res
        while (i < nums1.length && j < nums2.length) {
            int n1 = nums1[i];
            int n2 = nums2[j];
            if (n1 == n2) {
                if (k ==0 || result[k-1] != n1)
                    result[k++] = n1;
                i++;
                j++;
            } else if (n1 < n2) {
                i++;
            } else {
                j++;
            }
        }
        return Arrays.copyOfRange(result, 0, k);
    }
}
public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        boolean[] exist = new boolean[10000];
        List<Integer> list = new ArrayList<>();
        for(int i = 0;i < nums1.length;i++){
            exist[nums1[i]] = true;
        }
        for(int i = 0;i < nums2.length;i++){
            if(exist[nums2[i]]){
                list.add(nums2[i]);
                exist[nums2[i]] = false;
            }
        }
        int[] result = new int[list.size()];
        for(int i = 0;i < list.size();i++){
            result[i] = list.get(i);
        }
        return result;
    }
}
public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        //Set<Integer> set = new HashSet<Integer>(Arrays.asList(nums1));
        //Set<Integer> set = new HashSet<Integer>(Arrays.asList(nums1));
        Set<Integer> set = Arrays.stream(nums1).boxed().collect(Collectors.toSet());
        Set<Integer> res = new HashSet<>();
        // set.addAll(Arrays.asList(nums1));
        for (int num : nums2) {
            if (set.contains(num)) {
                res.add(num);
            }
        }
        int[] ans = new int[res.size()];
        int i = 0;
        for (int num : res) {
            ans[i++] = num;
        }
        return ans;
    }
}

以上是关于java 349.两个阵列的交叉点(#).java的主要内容,如果未能解决你的问题,请参考以下文章

java 349.两个阵列的交叉点(#).java

java 349.两个阵列的交叉点(#).java

java 349.两个阵列的交叉点(#).java

java 349.两个阵列的交叉点(#).java

java 349.两个阵列的交叉点(#).java

java 349.两个阵列的交叉点(#).java