幻纹麟 2020-09-19 16:49 采纳率: 100%
浏览 367
已采纳

怎么把多个有序的数组合并成一个数组,并且保证数组最短,同时保证合并后的数组还能保持各个数组的顺序?

例如:
数组1:[1,3,4]
数组2:[3,2,5]
数组3:[1,3,5]

合并后的最短数组 :[1,3,2,4,5] 或者 [1,3,4,2,5] 或者 [1,3,2,5,4],求出其中
一种情况就行。这个数组能够同时满足原来三个数组的元素排列顺序。
求大佬指点算法,什么语言都行

  • 写回答

3条回答 默认 最新

  • jingluan666 2020-09-19 18:02
    关注

    下面用python的set的union方法实现的(这里安装了boltons,如果直接用set,会自动排序),输出[1, 3, 4, 2, 5]

    from boltons.setutils import IndexedSet
    
    a=[1,3,4]
    b=[3,2,5]
    c=[1,3,5]
    
    result = IndexedSet(a).union(IndexedSet(b)).union(IndexedSet(c))
    
    print(result)
    
    

    https://stackoverflow.com/questions/1653970/does-python-have-an-ordered-set

    你研究下union方法

    c#实现如下:

    int[] a = { 1, 3, 4 };
    int[] b = { 3, 2, 5 };
    int[] c = { 1, 3, 5 };
    
    var result = a.Union(b).Union(c);
    
    foreach(var item in result)
    {
        Console.WriteLine(item);
    }            
    

    其Union的源码地址:https://github.com/dotnet/runtime/blob/master/src/libraries/System.Linq/src/System/Linq/Union.cs

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办