Back to Leetcode

Readme

Greedy/3664.Two-Letter-Card-Game/Readme.md

latest1.4 KB
Original Source

3664.Two-Letter-Card-Game

根据题意,我们可以将所有字符串分为三类,“x.”,“.x”和“xx”,其中"."可以是除了x以外的任何其他字符。

对于第一类字符,我们可以统计每种字符串的频次,得到一个nums1=[x1,x2,...,xi]的数组。根据题意,在该数组内,我们每次操作可以将两个不同的元素同时减1.

同理,对于第二类字符,我们可以统计每种字符串的频次,得到一个nums2=[y1,y2,...,yi]的数组。同样,根据题意,在该数组内部,我们每次操作可以将两个不同的元素同时减1.

对于第三类字符,因为就是“xx”,我们直接统计它的频次count3. 根据题意,我们可以取任意第一类字符的频次和count3同时减1,也可以取任意第二类字符的频次和count3同时减1。

本题问可以最多做多少次这样的“同时减1”的操作。

因为第一类和第二类字符不能相消,本题的关键其实就在于对count3的分配,究竟给多少个到第一类字符里进行相消,给多少个到第二类字符里进行相消?事实上这里没有明确的最优方法。我们能做的就是枚举。假设我们分x个"xx"到第一类字符,剩下的y=count3-y个"xx"到第二类字符,那么我们就转化为分别求[x1,x2,...,xi,x]和[y1,y2,...,yi,y]两个数组里,各自最多能做多少次成对的减1消除。这就转化为了常规的majority voting的模版题。