LeetCode 1996 游戏中弱角色的数量

题目链接:LeetCode 1996 游戏中弱角色的数量

题目大意:
LeetCode 1996 游戏中弱角色的数量

题解:
对于攻击值相同的角色,我们按照其防御值从小到大进行排序且按照攻击值从大到小开始遍历,这样就可以保证当前已经遍历过的最大防御值角色\(q\)的防御值\(maxDef\)严格大于当前角色\(p\)的防御值时,则此时\(q\)的攻击值一定严格大于\(p\)的攻击值。因为相同的攻击值按照防御值从大到小进行排列,如果出现已经遍历过的角色\(q\)的防御值大于\(p\)的防御值,则此时我们可以肯定可以推理出角色\(q\)与角色\(p\)攻击值一定不相同。

class Solution {
public:
    int numberOfWeakCharacters(vector<vector<int>>& properties) {
        sort(properties.begin(), properties.end(), [](const vector<int>& a, const vector<int>& b) {
            return a[0] == b[0] ? a[1] < b[1] :  a[0] > b[0];
        });
        int maxDef = 0, ans = 0;
        for (auto& p : properties) {
            if (maxDef > p[1]) {
                ans++;
            } else {
                maxDef = p[1];
            }
        }
        return ans;
    }
};
上一篇:java 给实体类赋默认值通用方法


下一篇:23个适合Python初学者练手的小脚本,学会技术嘎嘎增长!