如何解决反转整数值列表
| 我有一个整数值列表,该值可以介于1到4之间。 因此,例如,假设“ 0”。 我现在想通过以下方式反转值: 所有带...的条目 1应转换为4 2应转换为3, 3应转换为2, 4应该转换为1。 有很多方法可以做到这一点,但是我想采用最有效的方法。 有什么想法吗?解决方法
for(int i = 0; i < array.Length; i++)
{
array[i] = 5 - array[i];
}
, 实现此功能:
f(x)= 5-x
, 最有效的将是带有case语句的for循环,但它看起来不是最灵活或最漂亮。您可以提出的任何仅循环迭代一次的解决方案都可以被视为体面的解决方案,因为它们都是O(N)执行的。
, 请尝试以下操作:
var result = list.Select(item => 5 - item);
, 我不知道效率,但是我想首先过滤掉所有重复项(认为有一个LINQ扩展方法),然后从最小到最大排序,最后创建一个哈希图(Dictionary for(int i = 0,l = sortedUniqueArray.Count; i < l; i++) {
dict[sortedUniqueArray[i]] = sortedUniqueArray[l - i];
}
或类似的东西。然后,您可以像这样进行最终替换:
orgArray.Select(itm => dict[itm]);
, 我认为编写转换规则并使用此规则执行转换的好方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。