首页 > 其他分享 >870. 优势洗牌

870. 优势洗牌

时间:2022-10-08 17:02:08浏览次数:58  
标签:int 洗牌 870 优势 idx2 idx1 nums1 nums2 left

870. 优势洗牌

给定两个大小相等的数组 nums1 和 nums2nums1 相对于 nums2优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。

返回 nums1 的任意排列,使其相对于 nums2 的优势最大化。

示例 1:

输入:nums1 = [2,7,11,15], nums2 = [1,10,4,11]
输出:[2,11,7,15]

示例 2:

输入:nums1 = [12,24,8,32], nums2 = [13,25,32,11]
输出:[24,32,8,12]

提示:

  • 1 <= nums1.length <= 105
  • nums2.length == nums1.length
  • 0 <= nums1[i], nums2[i] <= 109
func advantageCount(nums1 []int, nums2 []int) []int {
    n := len(nums1)
    idx1 := make([]int, n)
    idx2 := make([]int, n)
    for i := 1; i < n; i++ {
        idx1[i] = i
        idx2[i] = i
    }
    // 利用idx1,idx2的 值 来记录nums1和nums2升序排序后下标的改变情况
    sort.Slice(idx1, func(i, j int) bool { return nums1[idx1[i]] < nums1[idx1[j]] })
    sort.Slice(idx2, func(i, j int) bool { return nums2[idx2[i]] < nums2[idx2[j]] })

    ans := make([]int, n)
    // left,right 指针在nums2中进行位置确定 
    left, right := 0, n-1
    // 田忌赛马
    for i := 0; i < n; i++ {
        if nums1[idx1[i]] > nums2[idx2[left]] {
            // 将排序后nums1第一个大于排序后nums2的元素放到这个nums2元素的对应位置
            ans[idx2[left]] = nums1[idx1[i]]
            left++
        } else {
            // 否则直接将该值放在未使用的nums2中最大值元素的对应位置
            ans[idx2[right]] = nums1[idx1[i]]
            right--
        }
    }
    return ans
}

 

标签:int,洗牌,870,优势,idx2,idx1,nums1,nums2,left
From: https://www.cnblogs.com/fulaien/p/16769469.html

相关文章

  • Spark计算框架的优势及核心功能
    传统的离线计算常见问题是数据反馈慢,无法满足客户进行实时数据做决策的需求。如果说MapReduce计算框架的出现是为了解决离线计算问题,那么Spark计算框架的出现则解决了实时计......
  • Spark计算框架的优势及核心功能
    传统的离线计算常见问题是数据反馈慢,无法满足客户进行实时数据做决策的需求。如果说MapReduce计算框架的出现是为了解决离线计算问题,那么Spark计算框架的出现则解决了实时......
  • OFD版式文件的优势
    本文转载自 OFD版式文件的优势OFD格式是我国自主可控的电子文件版式文档格式。在OFD格式产生之前,电子文件存档格式并没有统一的国家或行业标准,档案工作中普遍采用DOC、W......
  • CF870E题解
    题目大意给你平面上\(n(1\leqslantn\leqslant10^5)\)个点,给出他们的坐标\(x_i,y_i(-10^9\leqslantx_i,y_i\leqslant10^9)\)。对于每个点有三种操作:不进行任何操......
  • 2022.10.5java特性和优势
    Java构建工具:Ant,Maven,Jekins应用服务器:Tomcat,Jettty,Jboss,Websphere,weblogicWeb开发:Struts,Spring,Hibernate,myBatis开发工具:Eclipse,Netbean,intellij......
  • 数据填报有什么用?数据填报系统具有哪些优势?_光点科技
    大部分数据填报都是终端用户,或者可以说是我们使用信息系统的业务人员,提供这样一个纯粹的HTML页面表结构设计、发布、管理和填报数据的页面、界面友好、简单易用的统计研究分......
  • 【云原生】内存数据库如何发挥内存优势
    作者:石臻臻,CSDN博客之星Top5、KafkaContributor、nacosContributor、华为云MVP,腾讯云TVP,滴滴Kafka技术专家、​​LogiKMPMC(改名KnowStream)​​。​​LogiKM......
  • 0870-CDP公有云发布Iceberg技术预览版
    在过去的十年中,我们的客户成功部署的大规模数据集群已成为推动需求的大数据飞轮,它可以引入更多的数据,应用更复杂的分析,并成就了从业务分析师到数据科学家的许多新数据从业者......
  • 为什么是打字稿?了解该语言的主要优势。
    为什么是打字稿?了解该语言的主要优势。TypescriptVsJavaScriptTypeScript是JavaScript的强类型超集,编译为纯JavaScript。它是微软在2012年维护的一个开源框架。......
  • 精益生产中的拉动式生产有什么优势吗?
    拉动式生产就是目标导向的的生产模式,即销售需要多少就生产多少,小批量多批次灵活生产,主要用于离散制造里,所以他的优势也多体现在离散制造里,并不是所有企业都适用的。精益生......