//这道题关键在于如何判断两个分数相等,这里采用除以gcd化为最简,然后构造成字符串。
class Solution {
public long interchangeableRectangles(int[][] rectangles) {
long res=0;
HashMap<String,Integer> map=new HashMap<>();
for(int i=0;i<rectangles.length;i++){
int first=rectangles[i][0];
int second=rectangles[i][1];
int gcd=gcd(first,second);
String s=String.valueOf(first/gcd)+'/'+String.valueOf(second/gcd);
int exits= map.getOrDefault(s,0);
res+=exits;
map.put(s,exits+1);
}
return res;
}
//辗转相除法。 a%b=c b%c=d c%d=e....
private static int gcd(int a,int b){
if(b==0){
return a;
}
return gcd(b,a%b);
}
}
如何判断两个分数相等
转载
我有一壶酒
足以慰风尘
尽倾江海里
赠饮天下人
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:双亲委派模型
下一篇:双栈解决 表达式计算 问题
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
JAVA 两个类同时实现同一个接口
JAVA 两个类同时实现同一个接口
System 默认方法 静态方法