• 请不要在回答技术问题时复制粘贴 AI 生成的内容
helloword123
V2EX  ›  程序员

一个排序问题

  •  
  •   helloword123 · Oct 29, 2024 · 2349 views
    This topic created in 570 days ago, the information mentioned may be changed or developed.
    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 里面的值 可能有重复

    各位屌大的道友,谁来解解看。
    8 replies    2024-10-31 16:29:30 +08:00
    gesse
        1
    gesse  
       Oct 29, 2024
    你这个应该是在后续排序覆盖前面排序,并需要尽量保持前面排序内容

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

    然后自定义 cmp 方法,用稳定排序,从比较数值变成比较 indexN 中查找出的 index ,这里需要理清规则,每个元素在 3 个 sort 中都可能存在或不存在,无法根据三个 sort 排序的,定义为相等
    lpe234
        5
    lpe234  
       Oct 29, 2024
    先合并规则,然后再排序。
    MYDB
        6
    MYDB  
       Oct 29, 2024 via iPhone
    @qiangshenqi GPT 对于逻辑问题的代码不擅长
    helloword123
        7
    helloword123  
    OP
       Oct 31, 2024
    @sagaxu 这种也不行好像
    helloword123
        8
    helloword123  
    OP
       Oct 31, 2024
    @lpe234 规则合并可以看成把 sort1 作为 orignal 递归是个思路
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2567 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 15:59 · PVG 23:59 · LAX 08:59 · JFK 11:59
    ♥ Do have faith in what you're doing.