LeetCode 870 | 优势洗牌(田忌赛马策略)详解
在算法题中,我们经常会遇到如何最大化优势、收益或者胜率的问题。LeetCode 第 870 题《优势洗牌》(Advantage Shuffle)正是这样一个典型的“贪心”策略题目,它既有实际应用背景,也具有一定的策略性。本文将详细解析该题的题目描述、解题思路、代码实现及复杂度分析。
📌 题目描述
给定两个长度相等的整数数组 nums1
和 nums2
,你需要返回 nums1
的一个任意排列,使得其在每个索引位置上与 nums2
相比的优势最大化。
所谓优势,是指 nums1[i] > nums2[i]
成立的索引个数。
示例 1:
输入:
nums1 = [2,7,11,15]
nums2 = [1,10,4,11]
输出:
[2,11,7,15]
解释:
在这种排列下,有三对索引满足 nums1[i] > nums2[i]:2>1, 11>10, 7>4。
示例 2:
输入:
nums1 = [12,24,8,32]
nums2 = [13,25,32,11]
输出:
[24,32,8,12]
🎯 解题思路
这道题的核心在于找到一个策略,使得 nums1[i] > nums2[i]
尽可能多。