【力扣】两个数组的交集 II
2021-04-18 04:28
                         标签:次数   res   顺序   方法   put   color   temp   problem   解答    给定两个数组,编写一个函数来计算它们的交集。   示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 来源:力扣(LeetCode) 这个问题真是搞不懂我了,我以为是连续的,没想到随便都可以,以后要注意读题啊。 解题方法1:使用hashMap的方式     解答二:   【力扣】两个数组的交集 II 标签:次数   res   顺序   方法   put   color   temp   problem   解答    原文地址:https://www.cnblogs.com/fengtingxin/p/13296538.html
输出:[2,2]
示例 2:
输出:[4,9]
 
我们可以不考虑输出结果的顺序。
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-iipublic int[] intersect(int[] nums1, int[] nums2) {
        if (nums1.length  nums2.length){
            return intersect(nums2,nums1);
        }
        Map
public int[] intersect(int[] nums1, int[] nums2) {
        //直接排序,升序
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        int index1 = 0 , index2 = 0 , index = 0;
        int indexLength1 = nums1.length , indexLength2 = nums2.length;
        int result[] = new int[indexLength1 > indexLength2 ? indexLength2 : indexLength1];
        
        //通过循环的方式,把result处理了
        while(index1  indexLength2){
            if (nums1[index1]  nums2[index2]){
                index1++;
            } else if (nums1[index1] > nums2[index2]){
                index2++;
            }else {
                result[index] = nums1[index1];
                index++;
                index1++;
                index2++;
            }
        }
        //注意这里包括下标from,不包括上标to
        return Arrays.copyOfRange(result,0,index);
    }