跳到主要内容

2001.可互换矩形的组数

链接:2001.可互换矩形的组数
难度:Medium
标签:数组、哈希表、数学、计数、数论
简介:计算并返回 rectangles 中有多少对 可互换 矩形。

题解 1 - cpp

  • 编辑时间:2022-01-07
  • 执行用时:500ms
  • 内存消耗:134.5MB
  • 编程语言:cpp
  • 解法介绍:统计最简比例的个数。
int gcd(int a, int b) {
if (b) return gcd(b, a % b);
return a;
}
class Solution {
public:
struct Data {
int a, b;
Data(int a, int b) : a(a), b(b) {
int c = gcd(a, b);
this->a /= c;
this->b /= c;
}
bool operator<(const Data &obj) const {
if (a != obj.a) return a < obj.a;
return b < obj.b;
}
};
long long interchangeableRectangles(vector<vector<int>> &rectangles) {
map<Data, int> m;
long long ans = 0;
for (auto &x : rectangles) {
Data d(x[0], x[1]);
ans += m[d];
m[d] += 1;
}
return ans;
}
};