当前位置:   article > 正文

两个数组A和B的长度相同,找出 A[i] > B[i] 数量最多的A的一个排序结果,保证A对应B的顺序不变_给定两个只包含数字的数组a, b, 调整数组a里面数字的顺序,使得尽可能多的a[i] > b

给定两个只包含数字的数组a, b, 调整数组a里面数字的顺序,使得尽可能多的a[i] > b

题目

    两个数组A和B的长度相同,找出 A[i] > B[i] 数量最多的A的一个排序结果,保证A对应B的顺序不变
    A=[2,5,9,1]
    B=[6,3,7,4]
 
    因为A[i] > B[i]的数共有两个,比如A的一个结果可以是 A=[9,1,2,5]
  • 1
  • 2
  • 3
  • 4
  • 5

分析

   对B排序获得新数组:bSort=[3,4,6,7],被使用过后就把值改为 -1 (或者其他标志性的值)
 
    bSort 相对于B数组的顺序索引数组:bSortIndex=[1,3,0,2]
 
    贪心策略:
    1. 对A遍历和 bSort 倒着对比,2由于不大于任何bSort中的数,根据贪心策略 2 放在 bSort 中 7 的位置最好,再根据 bSortIndex 数组就可以找到 2 应该放的位置,将 7的位置置为 -12. 5 放在刚好比4大的位置上最好,把 bSort 的值置为-1
 
    注意:因为要得出A的结果对应B的顺序不变,这里对B已经排序了,所以要记录B之前的位置 (这里可以用索引数组记录或者对象来存储值和下标)
    
    结果是 A=
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/884179
推荐阅读
相关标签
  

闽ICP备14008679号