gpt4 book ai didi

ruby - 在排序之前和之后索引具有重复元素的数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:11 26 4
gpt4 key购买 nike

这是基本问题:我有一个整数数组,其中可能有重复的元素。我需要知道每个元素的索引,但是当我对数组进行排序时,无论何时从新数组中选择一个元素,我都希望能够引用原始数组中的相同元素。

我正在寻找问题的解决方案,或者可能是我正在采用的方法的解决方案。

这是一个数组

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_by根据sort_order对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 数组?

也许有更好的方法来做到这一点?

最佳答案

我建议先用辅助数组压缩原始数组,根据来自原始数组的组件对压缩后的数组进行排序,然后解压缩它们(不幸的是,这种方法不存在,但你可以进行转置)。或者您可以实现自己的排序逻辑,正如 Hunter 所指出的那样。

关于ruby - 在排序之前和之后索引具有重复元素的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com