0
点赞
收藏
分享

微信扫一扫

leetcode每日一题1996. 游戏中弱角色的数量 排序+遍历 实则是对lambda表达式的复习同时也是对贪心的复习

🙊本文目录👍

🙊写在前面🙊

今天陪母亲大人出去剪了个头发的,看着我日渐稀疏的脑阔顶,不仅落下了悔恨的泪水,看着镜子中,逐渐秃顶的我,默默地叹了口气,写了这篇令人还掉不了头发的中等题~

题目

返回 弱角色 的数量。

示例

示例1:

输入:properties = [[5,5],[6,3],[3,6]]
输出:0
解释:不存在攻击和防御都严格高于其他角色的角色。

示例2:

输入:properties = [[2,2],[3,3]]
输出:1
解释:第一个角色是弱角色,因为第二个角色的攻击和防御严格大于该角色。

提示

2 <= properties.length <= 10^5
properties[i].length == 2
1 <= attacki, defensei <= 10^5

📝思路📝

当我们拿到这种题时首先第一步要读懂题弱角色的存在条件就是,该角色的所有属性比另一个人的所有属性都要低,就是弱角色,那如果两个人攻击力相同时,他们之间就不会产生弱角色,那当前如果攻击力相同时防御力越拉胯的人是不是越容易被破防被比他攻击力高一点的兄弟给干死成弱角色呢,思路有了,那咱们就来看看如何进行解决。

⭐代码实现⭐

class Solution {
    public int numberOfWeakCharacters(int[][] properties) {
        //用于记录角色个数 n
        int n = properties.length;
        //将角色能力进行排序 如果 角色之间的攻击力相同 则将 防御力较低的排到前面 反之 攻击力按照降序排序
        Arrays.sort(properties,(role1,role2)->role1[0]==role2[0]? role1[1] - role2[1] : role2[0]-role1[0]);
        //用于记录当前 弱角色 人数
        int weakRoleCount = 0;
        //记录当前防御力能破防的最大值
        int defenseMax = Integer.MIN_VALUE;
        for (int i = 0 ; i< n;i++){
            //如果能破防则弱角色+1
            if (defenseMax > properties[i][1]){
                weakRoleCount++;
            }
            //记录最大破防值
            defenseMax = Math.max(defenseMax,properties[i][1]);
        }
        return weakRoleCount;
    }
}

运行结果

在这里插入图片描述

🙊写在最后🙊

2022-1-28 今天小付打卡了哦~

美好的日出 美好的山河

都因有你存在 而璀璨 耀眼

举报

相关推荐

0 条评论