File tree 6 files changed +197
-11
lines changed
solution/1100-1199/1128.Number of Equivalent Domino Pairs
6 files changed +197
-11
lines changed Original file line number Diff line number Diff line change 42
42
<!-- 这里可写当前语言的特殊实现逻辑 -->
43
43
44
44
``` python
45
-
45
+ class Solution :
46
+ def numEquivDominoPairs (self , dominoes : List[List[int ]]) -> int :
47
+ counter = Counter()
48
+ ans = 0
49
+ for a, b in dominoes:
50
+ v = a * 10 + b if a > b else b * 10 + a
51
+ ans += counter[v]
52
+ counter[v] += 1
53
+ return ans
46
54
```
47
55
48
56
### ** Java**
49
57
50
58
<!-- 这里可写当前语言的特殊实现逻辑 -->
51
59
52
60
``` java
61
+ class Solution {
62
+ public int numEquivDominoPairs (int [][] dominoes ) {
63
+ int ans = 0 ;
64
+ int [] counter = new int [100 ];
65
+ for (int [] d : dominoes) {
66
+ int v = d[0 ] > d[1 ] ? d[0 ] * 10 + d[1 ] : d[1 ] * 10 + d[0 ];
67
+ ans += counter[v];
68
+ ++ counter[v];
69
+ }
70
+ return ans;
71
+ }
72
+ }
73
+ ```
74
+
75
+ ``` java
76
+ class Solution {
77
+ public int numEquivDominoPairs (int [][] dominoes ) {
78
+ int [] counter = new int [100 ];
79
+ for (int [] d : dominoes) {
80
+ int v = d[0 ] > d[1 ] ? d[0 ] * 10 + d[1 ] : d[1 ] * 10 + d[0 ];
81
+ ++ counter[v];
82
+ }
83
+ int ans = 0 ;
84
+ for (int c : counter) {
85
+ ans += c * (c - 1 ) / 2 ;
86
+ }
87
+ return ans;
88
+ }
89
+ }
90
+ ```
91
+
92
+ ### ** C++**
93
+
94
+ ``` cpp
95
+ class Solution {
96
+ public:
97
+ int numEquivDominoPairs(vector<vector<int >>& dominoes) {
98
+ vector<int > counter(100);
99
+ int ans = 0;
100
+ for (auto& d : dominoes)
101
+ {
102
+ int v = d[ 0] > d[ 1] ? d[ 0] * 10 + d[ 1] : d[ 1] * 10 + d[ 0] ;
103
+ ans += counter[ v] ;
104
+ ++counter[ v] ;
105
+ }
106
+ return ans;
107
+ }
108
+ };
109
+ ```
53
110
111
+ ### **Go**
112
+
113
+ ```go
114
+ func numEquivDominoPairs(dominoes [][]int) int {
115
+ counter := make([]int, 100)
116
+ for _, d := range dominoes {
117
+ if d[1] < d[0] {
118
+ d[0], d[1] = d[1], d[0]
119
+ }
120
+ v := d[0]*10 + d[1]
121
+ counter[v]++
122
+ }
123
+ ans := 0
124
+ for _, c := range counter {
125
+ ans += c * (c - 1) / 2
126
+ }
127
+ return ans
128
+ }
54
129
```
55
130
56
131
### ** ...**
Original file line number Diff line number Diff line change 34
34
### ** Python3**
35
35
36
36
``` python
37
-
37
+ class Solution :
38
+ def numEquivDominoPairs (self , dominoes : List[List[int ]]) -> int :
39
+ counter = Counter()
40
+ ans = 0
41
+ for a, b in dominoes:
42
+ v = a * 10 + b if a > b else b * 10 + a
43
+ ans += counter[v]
44
+ counter[v] += 1
45
+ return ans
38
46
```
39
47
40
48
### ** Java**
41
49
42
50
``` java
51
+ class Solution {
52
+ public int numEquivDominoPairs (int [][] dominoes ) {
53
+ int ans = 0 ;
54
+ int [] counter = new int [100 ];
55
+ for (int [] d : dominoes) {
56
+ int v = d[0 ] > d[1 ] ? d[0 ] * 10 + d[1 ] : d[1 ] * 10 + d[0 ];
57
+ ans += counter[v];
58
+ ++ counter[v];
59
+ }
60
+ return ans;
61
+ }
62
+ }
63
+ ```
64
+
65
+ ``` java
66
+ class Solution {
67
+ public int numEquivDominoPairs (int [][] dominoes ) {
68
+ int [] counter = new int [100 ];
69
+ for (int [] d : dominoes) {
70
+ int v = d[0 ] > d[1 ] ? d[0 ] * 10 + d[1 ] : d[1 ] * 10 + d[0 ];
71
+ ++ counter[v];
72
+ }
73
+ int ans = 0 ;
74
+ for (int c : counter) {
75
+ ans += c * (c - 1 ) / 2 ;
76
+ }
77
+ return ans;
78
+ }
79
+ }
80
+ ```
81
+
82
+ ### ** C++**
83
+
84
+ ``` cpp
85
+ class Solution {
86
+ public:
87
+ int numEquivDominoPairs(vector<vector<int >>& dominoes) {
88
+ vector<int > counter(100);
89
+ int ans = 0;
90
+ for (auto& d : dominoes)
91
+ {
92
+ int v = d[ 0] > d[ 1] ? d[ 0] * 10 + d[ 1] : d[ 1] * 10 + d[ 0] ;
93
+ ans += counter[ v] ;
94
+ ++counter[ v] ;
95
+ }
96
+ return ans;
97
+ }
98
+ };
99
+ ```
43
100
101
+ ### **Go**
102
+
103
+ ```go
104
+ func numEquivDominoPairs(dominoes [][]int) int {
105
+ counter := make([]int, 100)
106
+ for _, d := range dominoes {
107
+ if d[1] < d[0] {
108
+ d[0], d[1] = d[1], d[0]
109
+ }
110
+ v := d[0]*10 + d[1]
111
+ counter[v]++
112
+ }
113
+ ans := 0
114
+ for _, c := range counter {
115
+ ans += c * (c - 1) / 2
116
+ }
117
+ return ans
118
+ }
44
119
```
45
120
46
121
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int numEquivDominoPairs (vector<vector<int >>& dominoes) {
4
+ vector<int > counter (100 );
5
+ int ans = 0 ;
6
+ for (auto & d : dominoes)
7
+ {
8
+ int v = d[0 ] > d[1 ] ? d[0 ] * 10 + d[1 ] : d[1 ] * 10 + d[0 ];
9
+ ans += counter[v];
10
+ ++counter[v];
11
+ }
12
+ return ans;
13
+ }
14
+ };
Original file line number Diff line number Diff line change
1
+ func numEquivDominoPairs (dominoes [][]int ) int {
2
+ counter := make ([]int , 100 )
3
+ for _ , d := range dominoes {
4
+ if d [1 ] < d [0 ] {
5
+ d [0 ], d [1 ] = d [1 ], d [0 ]
6
+ }
7
+ v := d [0 ]* 10 + d [1 ]
8
+ counter [v ]++
9
+ }
10
+ ans := 0
11
+ for _ , c := range counter {
12
+ ans += c * (c - 1 ) / 2
13
+ }
14
+ return ans
15
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int numEquivDominoPairs (int [][] dominoes ) {
3
- Map <Integer , Integer > map = new HashMap <>();
3
+ int ans = 0 ;
4
+ int [] counter = new int [100 ];
4
5
for (int [] d : dominoes ) {
5
- int x = d [0 ] < d [1 ] ? d [0 ] * 10 + d [1 ] : d [1 ] * 10 + d [0 ];
6
- map .put (x , map .getOrDefault (x , 0 ) + 1 );
6
+ int v = d [0 ] > d [1 ] ? d [0 ] * 10 + d [1 ] : d [1 ] * 10 + d [0 ];
7
+ ans += counter [v ];
8
+ ++counter [v ];
7
9
}
8
- int res = 0 ;
9
- for (int v : map .values ()) {
10
- res += v * (v - 1 ) / 2 ;
11
- }
12
- return res ;
10
+ return ans ;
13
11
}
14
- }
12
+ }
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def numEquivDominoPairs (self , dominoes : List [List [int ]]) -> int :
3
+ counter = Counter ()
4
+ ans = 0
5
+ for a , b in dominoes :
6
+ v = a * 10 + b if a > b else b * 10 + a
7
+ ans += counter [v ]
8
+ counter [v ] += 1
9
+ return ans
You can’t perform that action at this time.
0 commit comments