C#字典的键值对遍历:foreach (KeyValuePair<int, int> kvp in dic)
1. 题目描述
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; } }