Leetcode 1534. Count Good Triplets
第一次参加Weekly Contest,这是我做出的第一道题。
题目链接: Count Good Triplets
难度:easy
题目大意:
给一组数,选三个数作为三角形的三条边边长,统计能组成多少个符合题意是三角形。
思路:
暴力解法,用3个for循环来寻找符合题意的3个数作为三角形边长,因为输入数字的个数在100以内,所以暴力解法也能过。讨论区有大佬对暴力解法进行了优化。
代码
暴力解法:
class Solution {
public int countGoodTriplets(int[] arr, int a, int b, int c) {
int count=0;
for(int i=0;i<arr.length-2;i++){
for(int j=i+1;j<arr.length-1;j++){
for(int k=j+1;k<arr.length;k++){
if(Math.abs(arr[i]-arr[j])<=a&&Math.abs(arr[j]-arr[k])<=b&&Math.abs(arr[i]-arr[k])<=c){
count++;
}
}
}
}
return count;
}
}
优化后:
class Solution {
public int countGoodTriplets(int[] arr, int a, int b, int c) {
int count=0;
for(int i=0;i<arr.length-2;i++){
for(int j=i+1;j<arr.length-1;j++){
if(Math.abs(arr[i]-arr[j])<=a){//如果不满足这个条件则不再判断其它两个条件是否满足
for(int k=j+1;k<arr.length;k++){
if(Math.abs(arr[j]-arr[k])<=b&&Math.abs(arr[i]-arr[k])<=c){
count++;
}
}
}
}
}
return count;
}
}