3649. Number of Perfect Pairs Medium
1/**
2 * [3649] Number of Perfect Pairs
3 *
4 * You are given an integer array nums.
5 * A pair of indices (i, j) is called perfect if the following conditions are satisfied:
6 *
7 * i < j
8 * Let a = nums[i], b = nums[j]. Then:
9 *
10 * min(|a - b|, |a + b|) <= min(|a|, |b|)
11 * max(|a - b|, |a + b|) >= max(|a|, |b|)
12 *
13 *
14 *
15 * Return the number of distinct perfect pairs.
16 * Note: The absolute value |x| refers to the non-negative value of x.
17 *
18 * <strong class="example">Example 1:
19 * <div class="example-block">
20 * Input: <span class="example-io">nums = [0,1,2,3]</span>
21 * Output: <span class="example-io">2</span>
22 * Explanation:
23 * There are 2 perfect pairs:
24 * <table style="border: 1px solid black;">
25 * <thead>
26 * <tr>
27 * <th style="border: 1px solid black;">(i, j)</th>
28 * <th style="border: 1px solid black;">(a, b)</th>
29 * <th style="border: 1px solid black;">min(|a - b|, |a + b|)</th>
30 * <th style="border: 1px solid black;">min(|a|, |b|)</th>
31 * <th style="border: 1px solid black;">max(|a - b|, |a + b|)</th>
32 * <th style="border: 1px solid black;">max(|a|, |b|)</th>
33 * </tr>
34 * </thead>
35 * <tbody>
36 * <tr>
37 * <td style="border: 1px solid black;">(1, 2)</td>
38 * <td style="border: 1px solid black;">(1, 2)</td>
39 * <td style="border: 1px solid black;">min(|1 - 2|, |1 + 2|) = 1</td>
40 * <td style="border: 1px solid black;">1</td>
41 * <td style="border: 1px solid black;">max(|1 - 2|, |1 + 2|) = 3</td>
42 * <td style="border: 1px solid black;">2</td>
43 * </tr>
44 * <tr>
45 * <td style="border: 1px solid black;">(2, 3)</td>
46 * <td style="border: 1px solid black;">(2, 3)</td>
47 * <td style="border: 1px solid black;">min(|2 - 3|, |2 + 3|) = 1</td>
48 * <td style="border: 1px solid black;">2</td>
49 * <td style="border: 1px solid black;">max(|2 - 3|, |2 + 3|) = 5</td>
50 * <td style="border: 1px solid black;">3</td>
51 * </tr>
52 * </tbody>
53 * </table>
54 * </div>
55 * <strong class="example">Example 2:
56 * <div class="example-block">
57 * Input: <span class="example-io">nums = [-3,2,-1,4]</span>
58 * Output: <span class="example-io">4</span>
59 * Explanation:
60 * There are 4 perfect pairs:
61 * <table style="border: 1px solid black;">
62 * <thead>
63 * <tr>
64 * <th style="border: 1px solid black;">(i, j)</th>
65 * <th style="border: 1px solid black;">(a, b)</th>
66 * <th style="border: 1px solid black;">min(|a - b|, |a + b|)</th>
67 * <th style="border: 1px solid black;">min(|a|, |b|)</th>
68 * <th style="border: 1px solid black;">max(|a - b|, |a + b|)</th>
69 * <th style="border: 1px solid black;">max(|a|, |b|)</th>
70 * </tr>
71 * </thead>
72 * <tbody>
73 * <tr>
74 * <td style="border: 1px solid black;">(0, 1)</td>
75 * <td style="border: 1px solid black;">(-3, 2)</td>
76 * <td style="border: 1px solid black;">min(|-3 - 2|, |-3 + 2|) = 1</td>
77 * <td style="border: 1px solid black;">2</td>
78 * <td style="border: 1px solid black;">max(|-3 - 2|, |-3 + 2|) = 5</td>
79 * <td style="border: 1px solid black;">3</td>
80 * </tr>
81 * <tr>
82 * <td style="border: 1px solid black;">(0, 3)</td>
83 * <td style="border: 1px solid black;">(-3, 4)</td>
84 * <td style="border: 1px solid black;">min(|-3 - 4|, |-3 + 4|) = 1</td>
85 * <td style="border: 1px solid black;">3</td>
86 * <td style="border: 1px solid black;">max(|-3 - 4|, |-3 + 4|) = 7</td>
87 * <td style="border: 1px solid black;">4</td>
88 * </tr>
89 * <tr>
90 * <td style="border: 1px solid black;">(1, 2)</td>
91 * <td style="border: 1px solid black;">(2, -1)</td>
92 * <td style="border: 1px solid black;">min(|2 - (-1)|, |2 + (-1)|) = 1</td>
93 * <td style="border: 1px solid black;">1</td>
94 * <td style="border: 1px solid black;">max(|2 - (-1)|, |2 + (-1)|) = 3</td>
95 * <td style="border: 1px solid black;">2</td>
96 * </tr>
97 * <tr>
98 * <td style="border: 1px solid black;">(1, 3)</td>
99 * <td style="border: 1px solid black;">(2, 4)</td>
100 * <td style="border: 1px solid black;">min(|2 - 4|, |2 + 4|) = 2</td>
101 * <td style="border: 1px solid black;">2</td>
102 * <td style="border: 1px solid black;">max(|2 - 4|, |2 + 4|) = 6</td>
103 * <td style="border: 1px solid black;">4</td>
104 * </tr>
105 * </tbody>
106 * </table>
107 * </div>
108 * <strong class="example">Example 3:
109 * <div class="example-block">
110 * Input: <span class="example-io">nums = [1,10,100,1000]</span>
111 * Output: <span class="example-io">0</span>
112 * Explanation:
113 * There are no perfect pairs. Thus, the answer is 0.
114 * </div>
115 *
116 * Constraints:
117 *
118 * 2 <= nums.length <= 10^5
119 * -10^9 <= nums[i] <= 10^9
120 *
121 */
122pub struct Solution {}
123
124// problem: https://leetcode.com/problems/number-of-perfect-pairs/
125// discuss: https://leetcode.com/problems/number-of-perfect-pairs/discuss/?currentPage=1&orderBy=most_votes&query=
126
127// submission codes start here
128
129impl Solution {
130 pub fn perfect_pairs(nums: Vec<i32>) -> i64 {
131
132 }
133}
134
135// submission codes end
136
137#[cfg(test)]
138mod tests {
139 use super::*;
140
141 #[test]
142 fn test_3649() {
143 }
144}
145Back
© 2026 bowen.ge All Rights Reserved.