当前位置:   article > 正文

2022.1.28 力扣-每日一题-游戏中弱角色的数量_所有英雄按照攻击力降序排序,如果相同则按照防御升序排序

所有英雄按照攻击力降序排序,如果相同则按照防御升序排序

题目描述:

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

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

返回 弱角色 的数量。

样例:

方法一:

  1. bool cmp(vector<int>& a, vector<int>& b)
  2. {
  3. //攻击力相同的,按照防御力的升序排序
  4. if (a[0] == b[0])
  5. {
  6. return a[1] < b[1];
  7. }
  8. //否则按照攻击力的降序排序
  9. return a[0] > b[0];
  10. }
  11. class Solution {
  12. public:
  13. int numberOfWeakCharacters(vector<vector<int>>& properties) {
  14. sort(properties.begin(), properties.end(), cmp);
  15. int n = properties.size();
  16. int ans = 0;
  17. int maxdefense = -1;
  18. for (int i = 0; i < n; i++)
  19. {
  20. if (maxdefense > properties[i][1]) ans++;
  21. else maxdefense = max(maxdefense, properties[i][1]);
  22. }
  23. return ans;
  24. }
  25. };

在及其难受地用后缀写出来之后,看了题解,突然令我豁然开朗!

只要将攻击力降序排序,攻击力相同的按照防御力升序排序即可,这样一来就避免了比较防御力大小时还要考虑攻击力是否相同的情况,因为从前往后遍历,由于攻击力相同的情况下防御力是按照升序遍历的,所以防御力大于自身的一定是攻击力也大于自身的!

太漂亮了,这就是那种我喜欢的简单又巧妙的题目! 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/528622
推荐阅读
相关标签
  

闽ICP备14008679号