LeetCode0350.两个数组的交集 II

题目要求

算法分析

将短数组元素以及出现的次数存到字典中(元素->键,出现次数->值),

遍历长数组的元素,如果该元素在字典中的个数大于0,则将字典中以该元素为键的值减1.并把元素存到结果数组中.

代码展示(C#)

public class Solution
{
    Dictionary<int, int> dic = new Dictionary<int, int>();

    public int[] Intersect(int[] nums1, int[] nums2)
    {
        int[] res = null;

        if(nums1.Length > nums2.Length)
        {
            res = MyFunc(nums2, nums1);
        }
        else
        {
            res = MyFunc(nums1, nums2);
        }

        return res;
    }

    public int[] MyFunc(int[] nums1, int[] nums2)
    {
        List<int> res = new List<int>();
        foreach (var item in nums1)
        {
            if (dic.ContainsKey(item))
            {
                dic[item]++;
            }
            else
            {
                dic.Add(item, 1);
            }
        }
        foreach (var item in nums2)
        {
            if (dic.ContainsKey(item))
            {
                if (dic[item] > 0)
                {
                    res.Add(item);
                    dic[item]--;
                }
            }
            
        }
        return res.ToArray();
    }
}

提交结果

原文地址:https://www.cnblogs.com/KingR/p/13295004.html