📖本篇内容:leetcode每日一题1996. 游戏中弱角色的数量 排序+遍历 实则是对lambda表达式的复习
📑 文章专栏:leetcode每日一题《打卡日常》
📆 最近更新:2022年1月27日 leetcode每日一题2047. 句子中的有效单词数~ 简单的字符串匹配
🙊个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ)
🌇 点赞 👍 收藏 ⭐留言 📝 一键三连 关爱程序猿,从你我做起
🙊写在前面🙊
今天陪母亲大人出去剪了个头发的,看着我日渐稀疏的脑阔顶,不仅落下了悔恨的泪水,看着镜子中,逐渐秃顶的我,默默地叹了口气,写了这篇令人还掉不了头发的中等题~
题目
你正在参加一个多角色游戏,每个角色都有两个主要属性:攻击 和 防御 。给你一个二维整数数组 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
解释:第一个角色是弱角色,因为第二个角色的攻击和防御严格大于该角色。
提示
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 今天小付打卡了哦~
美好的日出 美好的山河
都因有你存在 而璀璨 耀眼