已知
List<string> A;
值分别为:
"3",
"5"List<string> B;
值分别为:
"6",
"0",
"3",
"4",
"5"
现在要找出A在B里不存在的值
即:List<string> C 排除A里的值
值应该为
"6",
"0",
"4"
有什么比较好的算法没有?
List<string> A;
值分别为:
"3",
"5"List<string> B;
值分别为:
"6",
"0",
"3",
"4",
"5"
现在要找出A在B里不存在的值
即:List<string> C 排除A里的值
值应该为
"6",
"0",
"4"
有什么比较好的算法没有?
具体怎么弄?
想找个效率高的算法
{
List<string> list1 = new List<string>();
list1.Add("3");
list1.Add("5");
List<string> list2 = new List<string>();
list2.Add("6");
list2.Add("0");
list2.Add("3");
list2.Add("4");
list2.Add("5"); List<string> list3 = list2.Except(list1).ToList();
foreach (string i in list3)
{
MessageBox.Show(i.ToString());
}
}
List<string> A = new List<string>() { "3", "5"};
List<string> B = new List<string>() { "6", "0", "3", "4", "5" };
string[] C = null ;
foreach (string s in A)
{
if (B.Contains(s))
{
B.Remove(s);
}
}
C = new string[B.Count];
B.CopyTo(C);
foreach (string s in C)
{
Console.WriteLine(s);
}
Console.Read();运行结果为:
List<string> A = new List<string> { "3", "5" };
List<string> list = B.Where(a => !A.Contains(a)).ToList();
排序(使B有序)时间复杂度n*logn, 所以总的事件复杂度为n*logn+m*logn=(m+n)*logn如果不排序,就是m*n了。所以如果A, B比较大的话,先排序B还是比较好的。