• 1128. Number of Equivalent Domino Pairs


    问题:

    给出数对构成的数组dominoes,若其中一对数对dominoes[i]和另一对数对dominoes[j]包含两个数字相同(忽略顺序),那么称这两对数对等价,

    求给定数组dominoes,有多少对(i,j)为等价数对。

    Example 1:
    Input: dominoes = [[1,2],[2,1],[3,4],[5,6]]
    Output: 1
     
    
    Constraints:
    1 <= dominoes.length <= 40000
    1 <= dominoes[i][j] <= 9
    

      

    解法:

    由于限制条件:数对内数字在0~9之间,

    因此,我们可以考虑,桶排序

    int sumct[100]

    将每个数对,使用【较小数*10+较大数】标记,

    拥有相同标记的,则为满足条件的等价数对,

    计数等价数对,

    遍历所有数对,每增加一个等价数对,

    所求等价数对的对数+=目前存在的等价数对个数。

    res+=sumct[sum];

    参考代码:

     1 class Solution {
     2 public:
     3     int numEquivDominoPairs(vector<vector<int>>& dominoes) {
     4         int sumct[100]={0};
     5         int res=0;
     6         for(auto dom:dominoes){
     7             int sum=(dom[0]>dom[1])?dom[1]*10+dom[0]:dom[0]*10+dom[1];
     8             res+=sumct[sum];
     9             sumct[sum]++;
    10         }
    11         return res;
    12     }
    13 };
  • 相关阅读:
    想更改Github仓库中的某个文件结构
    记git一些基本用法
    剑指Offer-Python(16-20)
    剑指Offer-Python(11-15)
    初次使用flask
    Python的Cmd模块的简易运用学习
    SQL-全称量词查询
    线段树模板1
    OJ输入输出超时(C++)
    二叉查找树(BST)定义
  • 原文地址:https://www.cnblogs.com/habibah-chang/p/13197616.html
Copyright © 2020-2023  润新知