LeetCode-1996 游戏中弱角色的数量

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: LeetCode-1996 游戏中弱角色的数量

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/the-number-of-weak-characters-in-the-game

题目描述

你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个二维整数数组 properties ,其中 properties[i] = [attacki, defensei] 表示游戏中第 i 个角色的属性。

如果存在一个其他角色的攻击和防御等级 都严格高于 该角色的攻击和防御等级,则认为该角色为 弱角色 。更正式地,如果认为角色 i 弱于 存在的另一个角色 j ,那么 attackj > attacki 且 defensej > defensei 。

返回 弱角色 的数量。

 

示例 1:
输入:properties = [[5,5],[6,3],[3,6]]
输出:0
解释:不存在攻击和防御都严格高于其他角色的角色。
示例 2:
输入:properties = [[2,2],[3,3]]
输出:1
解释:第一个角色是弱角色,因为第二个角色的攻击和防御严格大于该角色。
示例 3:
输入:properties = [[1,5],[10,4],[4,3]]
输出:1
解释:第三个角色是弱角色,因为第二个角色的攻击和防御严格大于该角色。
提示:
2 <= properties.length <= 105
properties[i].length == 2
1 <= attacki, defensei <= 105

解题思路

常规的暴力解题思路:

将角色两两互相比较就可以得出哪个是弱角色,但是根据提示样例规模很大,很容易超时。

优化解法:

将角色先根据攻击力来降序排序,对于攻击力相同的角色,将防御力升序排序,这样就可以保证已经遍历过的角色q防御值大于p时,攻击力一定也是大于p的,注意要使用&来避免复制次数,否则会超时,从前到后依次遍历角色,由于经过排序操作,前方的角色攻击力必然比后方的角色攻击力高,只需要记录前方防御力的最大值,如果后方角色防御力未大于这个最大值,那么必然是弱角色。

代码展示

class Solution {
public:
    int numberOfWeakCharacters(vector<vector<int>>& properties) {
        int iRet = 0, iMax = INT_MIN;
        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]);
        });
        for(auto iter: properties)
        {
            if(iter[1] < iMax)
            {
                iRet++;
            }
            else
            {
                iMax = iter[1];
            }
        }
        return iRet;
    }
};


运行结果

 

相关文章
|
3月前
LeetCode题:174. 地下城游戏
LeetCode题:174. 地下城游戏
39 0
LeetCode题:174. 地下城游戏
|
4月前
|
Go
golang力扣leetcode 1823.找出游戏的获胜者
golang力扣leetcode 1823.找出游戏的获胜者
25 0
|
27天前
|
算法
【力扣】55.跳跃游戏
【力扣】55.跳跃游戏
|
4月前
leetcode:292. Nim 游戏(数学推理)
leetcode:292. Nim 游戏(数学推理)
19 0
|
4月前
|
算法 Java 测试技术
[Java·算法·中等] LeetCode 45. 跳跃游戏 II 详细解读
[Java·算法·中等] LeetCode 45. 跳跃游戏 II 详细解读
32 0
|
4月前
leetcode-529:扫雷游戏
leetcode-529:扫雷游戏
22 0
|
4月前
|
存储
leetcode-289:生命游戏
leetcode-289:生命游戏
26 0
|
4月前
leetcode-174:地下城游戏
leetcode-174:地下城游戏
25 0
|
4月前
|
SQL
leetcode-SQL-550. 游戏玩法分析 IV
leetcode-SQL-550. 游戏玩法分析 IV
23 1
|
4月前
|
SQL
leetcode-SQL-511. 游戏玩法分析 I
leetcode-SQL-511. 游戏玩法分析 I
22 0