This question already has answers here:
How do I remove duplicates from a C# array?
(23个答案)
在10个月前关闭。
我有两个整数堆栈StackA和StackB。
StackA具有以下值,但是StackB没有内容。
现在我需要将不同的值从StackA复制到StackB。
和它的工作,但我不确定是否是最好的解决方案。
有没有更好的方法可以做到这一点,或者有任何内置的方法可以做到这一点?
如果不使用Array就能完成,那就更好了。
反向是必需的,因为构造函数采用
(23个答案)
在10个月前关闭。
我有两个整数堆栈StackA和StackB。
StackA具有以下值,但是StackB没有内容。
StackA
-----
[40]
[11]
[56]
[10]
[11]
[56]
现在我需要将不同的值从StackA复制到StackB。
public static void CopyDistinctValues(Stack<int> source, Stack<int> destination)
{
int[] numArray = source.ToArray();
for (int i = 0; i < numArray.Length; i++)
{
if (!destination.Contains(numArray[i]))
{
destination.Push(numArray[i]);
}
}
}
和它的工作,但我不确定是否是最好的解决方案。
有没有更好的方法可以做到这一点,或者有任何内置的方法可以做到这一点?
如果不使用Array就能完成,那就更好了。
最佳答案
最短的方法是:
stackB = new Stack<int>(stackA.Distinct().Reverse());
反向是必需的,因为构造函数采用
IEnumerable
,并且Stack的IEnumerable
实现使它从最后一项开始。10-07 21:58