幻纹麟 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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看