You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求使两数组元素频率分布一致的最小交换成本

问题描述

给定两个均包含N个正整数的数组A和B,计算使两数组元素频率分布一致的最小成本。数组间交换元素的成本为交换的两个值中的较小值。求所需的最小成本,若无法实现则返回-1。

测试用例

Test Case 1:
  Input: 
    [4, 2, 1, 1]
    [4, 2, 2, 2]
  Output: 
    1

Test Case 2:
  Input:
    [1, 10, 10]
    [1, 20, 20]
  Output:
    2

Test Case 1的最优操作说明:
交换第一个数组中的1和第二个数组中的2,成本为1,交换后数组变为[4, 2, 1, 2]和[4, 2, 2, 1],满足频率分布一致的要求。

前置判断条件

若任意数字在两个数组中的总出现次数为奇数,则无法平衡数组,此时返回-1。

我的错误思路

我之前的实现思路如下:

  • 用两个字典分别统计数组A和B的元素频率,比如Test Case 1中,mp_A = {4: 1, 2: 1, 1: 2},mp_B = {4: 1, 2: 3}。
  • 计算每个数字的总出现次数,推导每个数组需要的目标次数,进而整理出待交换的数字及对应交换数量,比如Test Case 1中得到arr = [[2, 1], [1, 1]],并按元素值排序。
  • 采用双指针法,i从数组头部开始,j从数组尾部开始,优先用较小的元素完成交换,比如假设数组是[[x, 2], [y, 1], [z, 1]]且x < y < z,就用一个x和z交换、另一个x和y交换,认为最小成本是2x。

但已有评论证明这个方法是错误的,我现在不知道该如何继续实现,也不清楚正确的解题思路是什么。


内容的提问来源于stack exchange,提问作者Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:22:34