3603统计好三元组

Posted 小雷FansUnion

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3603统计好三元组相关的知识,希望对你有一定的参考价值。

给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。

如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。

0 <= i < j < k < arr.length

|arr[i] - arr[j]| <= a

|arr[j] - arr[k]| <= b

|arr[i] - arr[k]| <= c

其中 |x| 表示 x 的绝对值。

返回 好三元组的数量 。

  

示例 1

输入:arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3

输出:4

解释:一共有 4 个好三元组:[(3,0,1), (3,0,1), (3,1,1), (0,1,1)] 。

示例 2

输入:arr = [1,1,2,2,3], a = 0, b = 0, c = 1

输出:0

解释:不存在满足所有条件的三元组。

  

提示:

3 <= arr.length <= 100

0 <= arr[i] <= 1000

0 <= a, b, c <= 1000

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/count-good-triplets

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package cn.fansunion.leecode.isNumber;

/**

 * 1534. 统计好三元组 给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。

 *

 * 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。

 *

 * 0 <= i < j < k < arr.length |arr[i] - arr[j]| <= a |arr[j] - arr[k]| <= b |arr[i] - arr[k]| <= c 其中 |x| 表示 x 的绝对值。

 *

 * 返回 好三元组的数量 。

 *

 * 来源:力扣(LeetCode) 链接:力扣 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 *

 * @author wen.lei@brgroup.com

 *

 *         2022-2-19

 */

public class CountGoodTriplets

    /*示例 1:

     

    输入:arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3

    输出:4

    解释:一共有 4 个好三元组:[(3,0,1), (3,0,1), (3,1,1), (0,1,1)] 。

    示例 2:

     

    输入:arr = [1,1,2,2,3], a = 0, b = 0, c = 1

    输出:0

    解释:不存在满足所有条件的三元组。

      

     

    提示:

     

    3 <= arr.length <= 100

    0 <= arr[i] <= 1000

    0 <= a, b, c <= 1000*/

    public int countGoodTriplets(int[] arr, int a, int b, int c)

        int count = 0;

        for (int i = 0; i < arr.length; i++)

            for (int j = i + 1; j < arr.length; j++)

                for (int k = j+1; k < arr.length; k++)

                    boolean ijk =  j > i && k > j;

                    boolean abc = Math.abs(arr[i] - arr[j]) <= a && Math.abs(arr[j] - arr[k]) <= b

                        && Math.abs(arr[i] - arr[k]) <= c;

                    if (ijk && abc)

                        count++;

                    

                

            

        

        return count;

    

     

    //方法2 TODO

package test.leecode.isNumber;

import org.junit.Assert;

import org.junit.Test;

import cn.fansunion.leecode.isNumber.CountGoodTriplets;

/**

 * @author wen.lei@brgroup.com

 *

 * 2022-2-24

 */

public class CountGoodTripletsTest

    @Test

    public void test()

        CountGoodTriplets test = new CountGoodTriplets();

        int count=test.countGoodTriplets(new int[] 3,0,1,1,9,7723);

        Assert.assertEquals(4, count);

    

以上是关于3603统计好三元组的主要内容,如果未能解决你的问题,请参考以下文章

284统计好三元组

284统计好三元组

LeetCode Algorithm 1534. 统计好三元组

2179. 统计数组中好三元组数目(BIT)

leetcode困难2179统计数组中好三元组数目

LeetCode Algorithm 1925. 统计平方和三元组的数目