C# 比较二个数组并找出相同或不同元素的方法

string[] arr1 = new[] { "1", "2", "3", "4", "5" };
string[] arr2 = new[] { "1", "3", "5" };

//找出相同元素(即交集)
var sameArr = arr1.Intersect(arr2).ToArray();
//找出不同的元素(即交集的补集)
var diffArr = arr1.Where(c => !arr2.Contains(c)).ToArray();

找出相同元素还可以使用List<T>的特性使用去重功能

List<int> ss = new List<int>();
            ss.Add(1);
            ss.Add(1);
            ss.Add(2);
List<int> ss2 = new List<int>();
            ss2.Add(2);
            ss2.Add(3);
            ss2.Add(3);
List<int> ss3 = ss.AddRange(ss2);//合并两个数组
            List<int> ssRes= ss3.Distinct().ToList();
            //ssRes里只有1,2,3
时间: 2024-10-06 11:37:41

C# 比较二个数组并找出相同或不同元素的方法的相关文章

【学】从一个数组中找出重复最多的元素,并统计重复个数

通过json,将数组中的值都传给json中的键,利用json中的键是不能重复的性能,同时如果遇到重复的键,那就让这个键的值自增1,这样就能统计出重复次数 上面的方法可以得出一个json,但是还不够,因为无法比较json里的键或者值的大小,就要再将Json里的每组数据组成一个个小的json装到一个数组中,将统计的数量赋给每个json中的值,利用数组的sort的比较函数进行排序即可 function myMaxElement(arr){ var json = {}; for (var i=0; i<

js数组操作-找出一组按不同顺序排列的字符串的数组元素

从一组数组中找出一组按不同顺序排列的字符串的数组元素将字符串转换成数组后再对数组进行 sort 排序,abcd 和 bdca 使用 sort 排序后会变成 abcd,将拍好序的字符串作为对象的 key 来保存排序一致的字符串.通过将字符转换成 Unicode 编码,用到的 sort 排序,会隐式的转换. 我这里只是简单提供一种思路,所以例子都是简单的一维数组,如果是二维数组的话,使用递归. var stringClassify = function(){ var arrLength = arr.

数组-06. 找出不是两个数组共有的元素

数组-06. 找出不是两个数组共有的元素(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在2行中给出2个整型数组,每行先给出正整数N(<=20),随后是N个整数,其间以空格分隔. 输出格式: 在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格.题目保证至少存在一个这样的数字.同一数字不重复

数组-06. 找出不是两个数组共有的元素(20)

1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int i,j,k=0,l,a[20],b[20],c[40],m,n; 5 cin>>m; 6 for(i=0;i<m;++i) 7 cin>>a[i]; 8 cin>>n; 9 for(j=0;j<n;++j) 10 cin>>b[j]; 11 12 for(i=0;i<m;++i){ 13 for(j=0

数组中找出最小的K个数

题目 给出一个数组,找出K个最小的值 例如给出数组{5,2,4,3,1},给定K值3,则输出结果为{2,3,1} 程序 先给出第一个版本的程序 1 public static void printKNum(int[] source, int k) {//算法入口 2 if (k <= 0) { 3 System.out.println("请出入合法的K值"); 4 } else if (source.length <= k) {//如果数组的长度小于等于K,则全部输出 5

Leetcode34---&gt;Search for a Range(在排序数组中找出给定值出现的范围)

题目:给定一个排序数组,找出给定的target值出现的范围:算法复杂度要求在O(logn);如果没有找到,则返回[-1, -1]; 举例: For example,Given [5, 7, 7, 8, 8, 10] and target value 8,return [3, 4]. 解题思路: 一看到题目要求的时间复杂度O(logn),就自然想要要用到二分的方法,这道题目,我们自然也是用二分的方法: mid = (start + end) / 2;则target和nums[mid]的关系有三种:

[算法学习]给定一个整型数组,找出两个整数为指定整数的和(3)

问题描述: 设计一个类,包含如下两个成员函数: Save(int input) 插入一个整数到一个整数集合里. Test(int target) 检查是否存在两个数和为输入值.如果存在着两个数,则返回true,否则返回false 允许整数集合中存在相同值的元素 分析: 与[算法学习]给定一个整型数组,找出两个整数为指定整数的和(2)不同,这里需要算出的是存不存在这两个数,可以在上一篇的基础上修改一下数据结构,HashMap其中key是数值,value是数值个数,然后需要作两步判断,map中存在数

随机为一维数组赋值,找出其中的第二大值

int a[20] = {0}; 为数组中的元素赋值 for (int i = 0;  i < 20; i++) { a[i] = arc4random() % (50 - 10 + 1) + 10; printf("%d", a[i]); printf("\n"); } int max = a[0], sex = a[0]; max最大  sex第二大 for (int i = 0; i < 20; i++) { if (max < a[i])

C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置

#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7,2,3,1,6,8,4}; int i=0,j=0; int n = sizeof(a)/4; //外循环n-1轮 for(i=0;i<n-1;i++){ int pos = i;//始终指向最小的位置 for(j=i+1;j<n;j++){ if(a[j]<a[pos]){ pos = j