【发布时间】:2014-03-02 16:05:40
【问题描述】:
所以我在决定使用什么工具来解决这个问题时遇到了一些问题。这是一个相当复杂的问题,但我会尽力描述它。
目前我有一个收集并存储在哈希中的值的关系。哈希处理方式可以更改为您认为更好的任何其他方式。我现在只是使用哈希来保持关系,因为它很重要。
比如:
key -> value
1456 -> 1
1532 -> 50
1892 -> 2
1092 -> 5
1487 -> 10
5641 -> 5
1234 -> 2
1687 -> 1
我的目标是获取这些值,并调整它们以便没有重复项,然后将调整后的值放回与键的适当关系中。基本上我不希望删除重复值,我希望它们以某种方式更改,以便不再有重复值。 (上面示例中的重复项是:1 和 2)
作为旁注,这里总结了一些针对我的情况需要牢记的重要事项:
- 键值对之间的关系(必须始终知道哪个值对应哪个键)
- 没有任何重复值
- 您不能删除键值对,只能更改值。
- 值从低到高的顺序很重要
通常我对整数数组进行排序不会有问题,但在这种情况下,与其他值的关系给我带来了很多麻烦。
【问题讨论】:
-
更改值以使其唯一的规则是什么?
-
我想我明白了。以下是否有资格作为解决方案:
{ 1456 => 1, 1532 => 50, 1892 => 3, 1092 => 5, 1487 => 10, 5641 => 5, 1234 => 4, 1687 => 2}?{ 1456 => 1, 1532 => 7, 1892 => 3, 1092 => 5, 1487 => 6, 5641 => 5, 1234 => 4, 1687 => 2}呢?请对每个问题给出是/否的答案。顺便说一句,这就是你应该写散列的方式。 -
基本上确保该值与其他数字保持相对顺序,因此基本上对于值:1 2 2 4,值为 2 的键值对必须始终保持其相对位置值为 1 和 4 的键值对(我希望这是有道理的)...
-
所以如果你有1,2,2,3,50,这个可以简单地转到1,2,3,4,5,还是需要保留50:1,2, 3、4、50?
-
这毫无意义。你需要价值观是独一无二的,但它们是什么并不重要?为什么不只使用一个键数组?它具有排序作为数据结构的特征之一。
标签: ruby sorting hash duplicates