0
点赞
收藏
分享

微信扫一扫

【力扣每日一题/02】349. 两个数组的交集


C#字典的键值对遍历:foreach (KeyValuePair<int, int> kvp in dic)

1. 题目描述

【力扣每日一题/02】349. 两个数组的交集_数组

2. 题目分析

  • 给你两个数组,让你求两个数组的交集【输出结果是唯一的】
  • 首先,对于数组num1进行Dictionary遍历,不存在dic.Add(nums1[i], 1);,存在dic[nums1[i]] = 1;
  • 继而,对于数组num2进行Dictionary遍历,dic[nums2[i]]++:将重复的标记为2 dic.ContainsKey(nums2[i]) && dic[nums2[i]] == 1:主要防止有重复的,干扰数组cnt的定义大小
  • 最后,遍历<key,value>foreach (KeyValuePair<int, int> kvp in dic),找出value的key,返回cnt

3. 题目代码

public class Solution {
    public int[] Intersection(int[] nums1, int[] nums2) {
            if(nums1 == null && nums2 == null)
            {
                return new int[0];
            }
            Dictionary<int, int> dic = new Dictionary<int, int>();
            for (int i = 0; i < nums1.Length; i++)
            {
                if (dic.ContainsKey(nums1[i]))
                {
                    dic[nums1[i]] = 1;
                }
                else
                {
                    dic.Add(nums1[i], 1);
                }
            }
            int num = 0;
            for (int i = 0; i < nums2.Length; i++)
            {
               if (dic.ContainsKey(nums2[i]) && dic[nums2[i]] == 1)
                {
                    dic[nums2[i]]++;
                    num++;
                }
            }
            int[] cnt = new int[num];
           num = 0;
            foreach (KeyValuePair<int, int> kvp in dic)
            {
                if (kvp.Value >= 2)
                {
                    cnt[num++] = kvp.Key;
                }
            }
            return cnt;
    }
}


举报

相关推荐

0 条评论