leetcode每日一题-游戏中弱角色的数量

Posted C+++++++++++++++++++

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode每日一题-游戏中弱角色的数量相关的知识,希望对你有一定的参考价值。

文章目录

题目

题目链接

解题思路

一句话解决:以第一个字段为标准从大到小排序,然后再遍历数组,对比第二字段的最大值即可。

关键细节

为了避免第一个字段相同的情况下被更新,所以在排序时采取,攻击力降序防御力升序的方式(关键)来进行。

这样就让第一个字段相同时,按照从左到右的遍历顺序是不可能把第一个字段相同的情况拿来更新 cnt

解题代码

注意:golang 的代码中的断言型函数接口有点不一样。。它调用时用的是数组下标的形式来调用。

cpp version

class Solution 
public:
//一句话解决:以第一个字段为标准从大到小排序,然后再遍历数组,对比第二字段的最大值即可。
//但为了避免第一个字段相同的情况下被更新,所以在排序时采取,攻击力降序防御力升序的方式(关键)来进行
//这样就让第一个字段相同时,按照从左到右的遍历顺序是不可能把第一个字段相同的情况拿来更新cnt。
    int numberOfWeakCharacters(vector<vector<int>>& properties) 
        int n = properties.size();
        auto cmp =  [](vector<int>& t1,vector<int>&t2)return t1[0]==t2[0]?t1[1]<t2[1]:t1[0]>t2[0];;
        sort(properties.begin(),properties.end(),cmp);
        int mx = INT_MIN;
        int cnt = 0;
        for(int i=0;i<n;i++)
            if(mx>properties[i][1])
                cnt++;
            mx = max(mx,properties[i][1]);
        
        return cnt;
    
;

java version

class Solution 
    public int numberOfWeakCharacters(int[][] properties) 
        Arrays.sort(properties,(o1,o2)-> o1[0]==o2[0]?o1[1]-o2[1]:o2[0]-o1[0]);
        int max = -1,cnt = 0;
        for(int[] p : properties)
            if(p[1]<max)
                cnt++;
            max = Math.max(max,p[1]);
        
        return cnt;
    

golang version

func numberOfWeakCharacters(properties [][]int) int 
    sort.Slice(properties,func (i int,j int) bool//注意这个接口被写死只能用int型
        p, q := properties[i], properties[j]
        return p[0] > q[0] || p[0] == q[0] && p[1] < q[1]
    )
    var max = -1
    cnt := 0
    for _,v := range properties
        if max>v[1] 
            cnt++
        
        max = int(math.Max(float64(max), float64(v[1])))
    
    return cnt

收获

  • 被坑了,往二分+哈希表方向去写了。完全没想到之间排序+遍历就能解决。。。

排序的处理非常之精髓

以上是关于leetcode每日一题-游戏中弱角色的数量的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1996 游戏中弱角色的数量[自定义排序] HERODING的LeetCode之路

Leetcode刷题100天—5864. 游戏中弱角色的数量( 数组)—day29

Leetcode——根据身高重建队列 / 游戏中弱角色的数量 (排序,compare)

《LeetCode之每日一题》:152.Nim 游戏

LeetCode 解题大纲(每日一题C++自用)

LeetCode每日一题:240搜索二维矩阵II