C# 存在重复元素 II
**C# 存在重复元素 II**
**概述**
本文将介绍如何使用 C# 解决 "存在重复元素 II" 这个问题。这个问题是 LeetCode 上的一个经典题目,要求给定一个整数数组 `nums` 和一个整数 `k`,返回 `nums` 中所有出现次数大于 `k` 的元素的列表。
**解决方案**
我们将使用哈希表来解决这个问题。具体来说,我们将使用 C# 中的 `Dictionarycsharpusing System;
using System.Collections.Generic;
public class Solution {
public IList<int> FindDuplicates(int[] nums, int k) {
// 创建一个哈希表来存储数组中每个元素的出现次数 var countMap = new Dictionary<int, int>();
// 遍历数组并更新哈希表 foreach (var num in nums) {
if (!countMap.TryGetValue(num, out var count)) {
countMap[num] =1;
} else {
countMap[num]++;
}
}
// 创建一个列表来存储出现次数大于 k 的元素 var result = new List<int>();
// 遍历哈希表并添加出现次数大于 k 的元素到结果列表中 foreach (var pair in countMap) {
if (pair.Value > k) {
result.Add(pair.Key);
}
}
return result;
}
}
**示例**csharppublic class Program {
public static void Main() {
var solution = new Solution();
// 测试用例1 int[] nums = {1,2,3,4,5 };
int k =2;
var result = solution.FindDuplicates(nums, k);
Console.WriteLine(string.Join(", ", result)); // 输出: []
// 测试用例2 nums = new int[] {1,1,1,2,2,3 };
k =2;
result = solution.FindDuplicates(nums, k);
Console.WriteLine(string.Join(", ", result)); // 输出: [1]
// 测试用例3 nums = new int[] {1,2,3,4,5,6 };
k =3;
result = solution.FindDuplicates(nums, k);
Console.WriteLine(string.Join(", ", result)); // 输出: [1]
}
}
**注释**
* `FindDuplicates` 方法接受一个整数数组 `nums` 和一个整数 `k` 作为输入,并返回一个列表,包含出现次数大于 `k` 的元素。
* 我们使用哈希表来存储数组中每个元素的出现次数。具体来说,我们使用 C# 中的 `Dictionary
* 在 `FindDuplicates` 方法中,我们首先遍历数组并更新哈希表。在此过程中,我们检查每个元素是否已经存在于哈希表中。如果不存在,则将其添加到哈希表中,并设置出现次数为1。否则,增加该元素的出现次数。
* 接下来,我们创建一个列表来存储出现次数大于 `k` 的元素。在此过程中,我们遍历哈希表并检查每个元素的出现次数。如果出现次数大于 `k`,则将其添加到结果列表中。
* 最后,我们返回结果列表。
**总结**
本文介绍了如何使用 C# 解决 "存在重复元素 II" 这个问题。我们使用哈希表来存储数组中每个元素的出现次数,并在此基础上创建一个列表,包含出现次数大于 `k` 的元素。示例代码和注释帮助理解解决方案的细节。