java.lang.Object
g3601_3700.s3649_number_of_perfect_pairs.Solution

public class Solution extends Object
3649 - Number of Perfect Pairs.

Medium

You are given an integer array nums.

A pair of indices (i, j) is called perfect if the following conditions are satisfied:

  • i < j
  • Let a = nums[i], b = nums[j]. Then:
    • min(|a - b|, |a + b|) <= min(|a|, |b|)
    • max(|a - b|, |a + b|) >= max(|a|, |b|)

Return the number of distinct perfect pairs.

Note: The absolute value |x| refers to the non-negative value of x.

Example 1:

Input: nums = [0,1,2,3]

Output: 2

Explanation:

There are 2 perfect pairs:

(i, j)(a, b)min(|a \u2212 b|, |a + b|)min(|a|, |b|)max(|a \u2212 b|, |a + b|)max(|a|, |b|)
(1, 2)(1, 2)min(|1 \u2212 2|, |1 + 2|) = 11max(|1 \u2212 2|, |1 + 2|) = 32
(2, 3)(2, 3)min(|2 \u2212 3|, |2 + 3|) = 12max(|2 \u2212 3|, |2 + 3|) = 53

Example 2:

Input: nums = [-3,2,-1,4]

Output: 4

Explanation:

There are 4 perfect pairs:

(i, j)(a, b)min(|a \u2212 b|, |a + b|)min(|a|, |b|)max(|a \u2212 b|, |a + b|)max(|a|, |b|)
(0, 1)(-3, 2)min(|-3 - 2|, |-3 + 2|) = 12max(|-3 - 2|, |-3 + 2|) = 53
(0, 3)(-3, 4)min(|-3 - 4|, |-3 + 4|) = 13max(|-3 - 4|, |-3 + 4|) = 74
(1, 2)(2, -1)min(|2 - (-1)|, |2 + (-1)|) = 11max(|2 - (-1)|, |2 + (-1)|) = 32
(1, 3)(2, 4)min(|2 - 4|, |2 + 4|) = 22max(|2 - 4|, |2 + 4|) = 64

Example 3:

Input: nums = [1,10,100,1000]

Output: 0

Explanation:

There are no perfect pairs. Thus, the answer is 0.

Constraints:

  • 2 <= nums.length <= 105
  • -109 <= nums[i] <= 109
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • perfectPairs

      public long perfectPairs(int[] nums)