一个排序问题

51 天前
 helloword123
Integer[] original = {1, 2, 3, 4, 5, 6};
Integer[] sort1 = {6, 1, 3};
Integer[] sort2 = {2, 5, 4 ,6, 1};
Integer[] sort3 = {4, 1};
original 为原始序列,sort1 ,sort2 ,sort3 , 为给出的逻辑排序。
要求:
1 、对原始数据应用以下 3 个排序
2 、后面的排序 覆盖前面的 所以最终展示的是 1,6 ,不是 6 ,1
3 、应用完所有的 排序组后,保证最终结果符合 排序里面的值的逻辑顺序
4 、每个 sort 里面值是唯一的,不同的 sort 里面的值 可能有重复

各位屌大的道友,谁来解解看。
1458 次点击
所在节点    程序员
8 条回复
gesse
51 天前
你这个应该是在后续排序覆盖前面排序,并需要尽量保持前面排序内容

那应该最后是 61 , 而不是 16 ,因为 461 能满足所有三种排序方式。
qiangshenqi
51 天前
我直接就丢给 chatgpt 。。。
InkStone
51 天前
如果能保证输入数据不成环的话,这不就拓扑排序么
sagaxu
51 天前
把 sort1/sort2/sort3 处理成 map ,index1/index2/index3 ,index[n]表示 n 在 sort 中的位置

然后自定义 cmp 方法,用稳定排序,从比较数值变成比较 indexN 中查找出的 index ,这里需要理清规则,每个元素在 3 个 sort 中都可能存在或不存在,无法根据三个 sort 排序的,定义为相等
lpe234
51 天前
先合并规则,然后再排序。
MYDB
51 天前
@qiangshenqi GPT 对于逻辑问题的代码不擅长
helloword123
49 天前
@sagaxu 这种也不行好像
helloword123
49 天前
@lpe234 规则合并可以看成把 sort1 作为 orignal 递归是个思路

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1084498

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX