这是基本问题:我有一个可能包含重复元素的整数数组。我需要知道每个元素的索引,但是当我对数组进行排序时,每当我从新数组中选择一个元素时,我都希望能够从原始数组中引用相同的元素。
我正在寻找问题的解决方案,或者可能是我正在采取的方法的解决方案。
这是一个数组
a = [1, 2, 3, 4, 3, 5, 2]
有两个 2 和两个 3,但如果我使用第一个2
(从左起),我想使用索引 1,如果我使用第二个2
,我想使用索引 6。所以我使用一个辅助数组来允许我这样做:
helper = [0, 1, 2, 3, 4, 5, 6]
我将对其进行迭代并使用它来访问a
.
我可以用 来完成这个each_with_index
,但是当我对数组进行排序时问题就开始了。
现在我有一个排序顺序
sort_order = [2, 4, 1, 5, 3]
我用sort_ordersort_by
来排序a
,产生
sorted_a = [2, 2, 4, 1, 5, 3, 3]
您可以假设输入中的所有元素都存在sort_order
以避免sort_by
异常。
现在的问题是我的helper
数组应该更新以匹配新位置。每个元素的排序方式应与排序方式相同a
,因为不清楚新数组中的前 2 是在索引 1 处还是在原始数组的索引 6 处。
所以我的新辅助数组可能看起来像
new_helper = [1, 6, 3, 0, 5, 2, 4]
new_helper
因此,如果我采用这种方法,在给定原始数组和排序顺序的情况下,我将如何生成数组?
也许有更好的方法来做到这一点?