我有一个整数值列表,可以是1到4之间的任何值。
所以,比方说{1,2,4,1,3,2,1,4,4}
。
我现在想以下列方式反转值:
所有条目都包含......
有很多方法可以做到这一点,但我想采取最有效的方法。
有什么想法吗?
答案 0 :(得分:7)
for(int i = 0; i < array.Length; i++)
{
array[i] = 5 - array[i];
}
答案 1 :(得分:2)
实施此功能:
f(x)= 5 - x
答案 2 :(得分:1)
效率最高的是带有case语句的for循环,但它不是最灵活或最漂亮的。您可以提出的任何解决方案,只能循环一次循环可以被视为合适的解决方案,因为它们都将执行O(N)。
答案 3 :(得分:1)
尝试以下方法:
var result = list.Select(item => 5 - item);
答案 4 :(得分:0)
我不知道效率,但我认为首先过滤掉所有重复项(认为有一个LINQ扩展方法),然后从最小到最大排序,最后创建一个哈希映射(包含转换的字典&lt; int,int&gt;)。然后你可以像这样运行数组:
for(int i = 0, l = sortedUniqueArray.Count; i < l; i++) {
dict[sortedUniqueArray[i]] = sortedUniqueArray[l - i];
}
或类似的东西。然后你可以做这样的最终替换:
orgArray.Select(itm => dict[itm]);
答案 5 :(得分:0)
我认为编写转换规则和使用此规则的好方法可以执行转换。