1128. 等價多米諾骨牌對的數量

題目
難度:簡單
類型:數組
題意:找到所有的相同數組對。我最開始理解錯了,這種相同數對最多是k*(k-1)/2, 我開始理解成了階乘個,所以一直錯。以下並不是最優解法,只是一種思路,即先排序把相同的數對放在一起,然後統計相同數對的數量。最後把相同的數對用上面的公式求一下,就是最終結果。

class Solution {
public:
    int numEquivDominoPairs(vector<vector<int>>& d) {
        int n = d.size();
        int res = 0;
        for(auto &c: d){
            sort(c.begin(), c.end());
        }
        sort(d.begin(), d.end(),[](vector<int> x, vector<int> y){
            return x[0] < y[0] || x[0]==y[0] && x[1] < y[1];
        });
        for(int i = 0; i < n; ){
            int j = i;
            while(j < n && d[i]==d[j]) j++;
            if(j - i > 1){
                int k = j - i;
                res += k*(k-1)/2;
            }
            i = j;
        }
        return res;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章