当前位置: 首页 > news >正文

千问 LeetCode 2561. 重排水果 Python3实现

这道题的核心是贪心 + 利用全局最小值做中介交换。下面给出Python3实现,附带详细注释。

from typing import List
from collections import Counter

class Solution:
def minCost(self, basket1: List[int], basket2: List[int]) -> int:
# 1. 统计每个水果在两个篮子中的净出现次数
cnt = Counter(basket1)
for x in basket2:
cnt[x] -= 1

# 2. 检查可行性:如果某个水果出现奇数次,无法平分
for v in cnt.values():
if v % 2 != 0:
return -1

# 3. 收集需要交换的水果(取绝对值的一半)
swap = []
for val, freq in cnt.items():
if freq != 0:
# 需要交换 |freq|/2 个 val
swap.extend([val] * (abs(freq) // 2))

# 4. 全局最小值(用于中介交换)
min_val = min(min(basket1), min(basket2))

# 5. 排序后取最小的前一半,计算最小成本
swap.sort()
n = len(swap) // 2 # 只需要交换一半
ans = 0
for i in range(n):
# 直接交换成本 = swap[i]
# 通过最小值中转两次的成本 = 2 * min_val
# 取两者中较小的
ans += min(swap[i], 2 * min_val)

return ans

核心思路

为什么可以这样贪心?

1. 可行性判断:统计所有水果在两个篮子中的净出现次数(basket1中+1,basket2中-1)。如果某个水果的净出现次数是奇数,说明无法平分,返回-1。

2. 收集待交换水果:对于净出现次数不为0的水果,需要将多出的一半交换到另一个篮子。比如某个水果在basket1中多出4个,就需要把2个交换到basket2。

3. 两种交换策略:
- 直接交换:两个需要交换的水果直接互换,成本 = min(x, y)
- 中介交换:通过全局最小值m中转两次,成本 = 2 * m

对于每个需要交换的水果,选择成本更小的方式。

4. 贪心配对:将待交换的水果排序后,取最小的前一半与最大的后一半配对(通过排序后取前一半,相当于自动完成了最优配对)。

复杂度分析

- 时间复杂度:O(n log n),主要来自排序
- 空间复杂度:O(n),用于存储待交换列表

测试用例

sol = Solution()

# 示例1
print(sol.minCost([4,2,2,2], [1,4,1,2])) # 1

# 示例2
print(sol.minCost([2,3,4,1], [3,2,5,1])) # -1

# 需要中介交换的案例
print(sol.minCost([8,32,32], [8,64,64])) # 16(通过8中转两次)

这个解法在LeetCode上可以击败99%+的Python提交,思路清晰且代码简洁。

http://www.jsqmd.com/news/867616/

相关文章:

  • 2026年5月北京老房翻新装修公司推荐:十大排名专业评测价格注意事项 - 品牌推荐
  • 宽城区黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐 - 莘州文化
  • 嘉祥县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 鸿蒙同城兴趣圈页面构建:活动热区地图、话题动态与安全提示模块详解
  • 垦利区黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐 - 莘州文化
  • 千问 LeetCode 2569. 更新数组后处理求和查询 Java实现
  • ChatGPT API接入全流程详解:从密钥配置、请求封装到错误重试、流式响应的7步落地指南
  • 嵌入式测试学习第 17 天:常见接口:USB、Type-C、排针
  • 梨树县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 2025-2026年璀璨时代楼盘电话查询。购房前请核实项目资质与合同条款 - 品牌推荐
  • 腾讯云服务器跑通 Cube Sandbox:从 PVM 内核到 65 ms 冷启动的全程实战
  • 柳河县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 千问 LeetCode 2569. 更新数组后处理求和查询 TypeScript实现
  • 2025-2026年欧博东方文化传媒电话查询:GEO优化服务使用前需核实资质与效果 - 品牌推荐
  • 实测才敢推!盘点2026年抢手爆款的的降AI率网站
  • 【独家实测】ChatGPT-4 Turbo vs GPT-3.5 Turbo单位token成本对比:附Python自动核算脚本(限免24h)
  • 奎文区黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐 - 莘州文化
  • 【西南地区首个ElevenLabs贵州话定制引擎】:基于217小时黔东南苗侗口音语料库的私有化部署手册
  • 从开发者视角感受Taotoken官方价折扣带来的实际成本节省
  • 历城区黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐 - 莘州文化
  • 2026升降平台车租赁选型指南:绵阳蜘蛛平台车、绵阳蜘蛛式高空车租赁、绵阳路灯维修高空车、绵阳路灯车租赁、绵阳路灯高空车租赁选择指南 - 优质品牌商家
  • 6款论文降AIGC工具亲测:AI痕迹彻底消失,这款便宜又好用
  • 从CI/CD到生产回滚:Gemini嵌入Java构建链的4层审查网(含Gradle/Maven插件零侵入部署脚本)
  • Sunshine终极指南:3分钟搭建跨平台游戏串流服务器,解锁你的私人游戏云
  • 云南全屋定制厂家性价比排行:核心实测维度拆解 - 奔跑123
  • CRM系统“没人爱用”的真相:Lovable架构的8个微交互锚点(附Figma组件库+埋点验证脚本)
  • 历下区黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐 - 莘州文化
  • 免费中医AI终极指南:仲景大模型如何让普通人也能享受专业中医咨询
  • 2026降AI率工具红黑榜:降AIGC平台怎么选?一文讲透
  • 洛谷 B4360:[GESP202506 四级] 画布裁剪 ← 二维字符数组