C# 反转整数值列表

C# 反转整数值列表,c#,C#,我有一个整数值列表,可以是1到4之间的任意值。 比如说,{1,2,4,1,3,2,1,4,4}。 现在,我想通过以下方式反转这些值: 所有带有 1应转换为4 2应转换为3 3应转换为2 4应转换为1 有很多方法可以做到这一点,但我想采取最有效的方法 有什么想法吗?最有效的是带有case语句的for循环,但它不是最灵活、最漂亮的。任何只迭代循环一次的解决方案都可以被认为是不错的解决方案,因为它们都是O(N)执行的 for(int i=0;i

我有一个整数值列表,可以是1到4之间的任意值。 比如说,
{1,2,4,1,3,2,1,4,4}
。 现在,我想通过以下方式反转这些值: 所有带有

  • 1应转换为4
  • 2应转换为3
  • 3应转换为2
  • 4应转换为1
有很多方法可以做到这一点,但我想采取最有效的方法


有什么想法吗?

最有效的是带有case语句的for循环,但它不是最灵活、最漂亮的。任何只迭代循环一次的解决方案都可以被认为是不错的解决方案,因为它们都是O(N)执行的

for(int i=0;ifor(int i = 0; i < array.Length; i++)
{
    array[i] = 5 - array[i];
}
{ 数组[i]=5-数组[i]; }
我不知道效率如何,但我认为首先要过滤掉所有的重复项(想想有一个LINQ扩展方法),然后从最小到最大排序,最后创建一个保存转换的哈希映射(字典)。然后,您可以像这样在阵列中运行:

for(int i = 0, l = sortedUniqueArray.Count; i < l; i++) {
    dict[sortedUniqueArray[i]] = sortedUniqueArray[l - i];
}
orgArray.Select(itm => dict[itm]);

实现此功能:

f(x)=5-x尝试以下方法:

var result = list.Select(item => 5 - item);

我认为编写转换规则的好方法,并使用这些规则执行转换。

作业?让我们看一些代码。只需在数组上迭代,并对每个项执行
a[i]=5-a[i]
。我假设您能够自己编写循环。为什么您认为case语句比只计算
5-x
更快?(这在实践中并不重要)重要的部分是只迭代循环一次5-x是一个完全可以接受的解决方案