如何删除一个整数数组中存在于另一个整数数组中的所有元素?
如何删除一个整数数组中存在于另一个整数数组中的所有元素?
在我的C#程序中,我有一个包含一组整数和偶尔重复的整数的int数组。我想创建一个只包含初始数组中存在的重复数字的数组,但本身不包含重复数字的数组。根据我对C#的新手理解,我认为以下代码可以解决问题:
int a = 9;
int b = 6;
int c = 3;
int index = 0;
int[] mltpls = new int[a + b + c];
while (a > 0)
{
mltpls[index] = 2 * a;
a -= 1;
index += 1;
}
while(b > 0)
{
mltpls[index] = 3 * b;
b -= 1;
index += 1;
}
while(c > 0)
{
mltpls[index] = 5 * c;
c -= 1;
index += 1;
}
int[] mltpls_unique = mltpls.Distinct().ToArray();
int[] mltpls_dplcts = mltpls.Except(mltpls_unique).ToArray();
Console.WriteLine(mltpls_dplcts);
//编辑
//通过运行以下代码,我可以写出“mltpls”中的所有数字
for (int i = 0; i < mltpls.Length; i++)
{
Console.Write(mltpls[i] + ", ");
}
/*如果我尝试运行等效的代码来打印“mltpls_dplcts”数组,什么都不会显示,只有一个空行。*/
当我运行这个目标时,我的控制台应用程序的最终结果是一个空行。我对此的解释是数组mltpls_dplcts
是空的,或者我错误地打印了数组。
如何从数组中获取仅重复的值?
问题的出现原因是需要删除一个整型数组中存在于另一个整型数组中的所有元素。解决方法是通过使用LINQ查询语句来筛选出不重复的元素,并使用Except方法来获取两个数组中不相同的元素。
首先,我们可以使用以下代码来获取重复的元素数组:
var duplicates = mltpls.GroupBy(o => o) .Where(g => g.Count() > 1) .Select(g => g.First()).ToArray();
上述代码使用GroupBy方法按照元素的值对数组进行分组,然后使用Where方法筛选出重复出现的元素组,最后使用Select方法选择每个组中的第一个元素,并将结果转换为数组。
接下来,我们可以使用以下代码来获取只包含原始数组中不在第二个数组中的元素的新数组:
var newArr = mltpls.Except(duplicates).ToArray();
上述代码使用Except方法从原始数组中排除重复的元素数组,并将结果转换为数组。
通过以上两个步骤,我们可以删除原始数组中存在于第二个数组中的所有元素,并获得一个新的数组。
使用上述方法,我们可以方便地删除整型数组中存在于另一个整型数组中的所有元素。
问题出现的原因是数组mltpls_dplcts是空的,或者在打印数组时出现了错误。问题的解决方法是使用循环来解决。首先,使用Distinct方法将数组mltps中的重复元素去除,得到数组mltpls_unique。然后,通过比较mltps和mltpls_unique的长度差,确定重复元素的个数,并创建一个长度为差值的新数组mltpls_dplcts。接下来,使用两个嵌套的for循环来比较mltps中的每个元素,如果找到重复的元素,则将其放入mltpls_dplcts数组中。最后,使用String.Join方法将mltpls_dplcts数组的内容打印出来。代码的输出结果为18 12 10 6 15。
问题的解决方法是通过循环来比较数组中的元素,找到重复的元素并将其放入新数组中。这个方法的思路类似于在纸上写下重复的数字,然后使用两个指针来查找重复的数字。第一个指针记住第一个数字,并从数组中的下一个位置开始查找重复的数字。如果找到重复的数字,则将其写入另一张纸上,否则认为它是唯一的。然后,取数组中的第二个元素,记住它并再次开始查找。这个问题很适合使用循环来解决。
通过这个问题的解决方法,我们可以更好地理解如何使用循环来比较数组中的元素,并找到重复的元素。循环中的两个索引变量起到了指针的作用,帮助我们在数组中定位元素并进行比较。这种思路也可以应用于其他类似的问题。如果对代码还有疑问,可以继续提问。
问题出现的原因:需要删除一个整数数组中存在于另一个整数数组中的所有元素。
解决方法:
1. 首先,无法直接打印整数数组。需要使用循环逐个打印数组元素。
foreach (var element in mltpls_dplcts) { Console.WriteLine(element); }
2. 接下来,我们需要遍历要删除的整数数组,并检查每个元素是否存在于目标数组中。
foreach (var element in deleteArray) { if (targetArray.Contains(element)) { // 如果存在,则使用Remove方法删除目标数组中的元素 targetArray = targetArray.Where(val => val != element).ToArray(); } }
3. 最后,我们可以在循环结束后打印更新后的目标数组,以查看删除操作是否成功。
foreach (var element in targetArray) { Console.WriteLine(element); }
通过以上步骤,我们可以删除整数数组中存在于另一个整数数组中的所有元素。