Welcome to Subscribe On Youtube
2367. Number of Arithmetic Triplets
Description
You are given a 0-indexed, strictly increasing integer array nums
and a positive integer diff
. A triplet (i, j, k)
is an arithmetic triplet if the following conditions are met:
i < j < k
,nums[j] - nums[i] == diff
, andnums[k] - nums[j] == diff
.
Return the number of unique arithmetic triplets.
Example 1:
Input: nums = [0,1,4,6,7,10], diff = 3 Output: 2 Explanation: (1, 2, 4) is an arithmetic triplet because both 7 - 4 == 3 and 4 - 1 == 3. (2, 4, 5) is an arithmetic triplet because both 10 - 7 == 3 and 7 - 4 == 3.
Example 2:
Input: nums = [4,5,6,7,8,9], diff = 2 Output: 2 Explanation: (0, 2, 4) is an arithmetic triplet because both 8 - 6 == 2 and 6 - 4 == 2. (1, 3, 5) is an arithmetic triplet because both 9 - 7 == 2 and 7 - 5 == 2.
Constraints:
3 <= nums.length <= 200
0 <= nums[i] <= 200
1 <= diff <= 50
nums
is strictly increasing.
Solutions
-
class Solution { public int arithmeticTriplets(int[] nums, int diff) { int ans = 0; int n = nums.length; for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { for (int k = j + 1; k < n; ++k) { if (nums[j] - nums[i] == diff && nums[k] - nums[j] == diff) { ++ans; } } } } return ans; } }
-
class Solution { public: int arithmeticTriplets(vector<int>& nums, int diff) { int ans = 0; int n = nums.size(); for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { for (int k = j + 1; k < n; ++k) { if (nums[j] - nums[i] == diff && nums[k] - nums[j] == diff) { ++ans; } } } } return ans; } };
-
class Solution: def arithmeticTriplets(self, nums: List[int], diff: int) -> int: return sum(b - a == diff and c - b == diff for a, b, c in combinations(nums, 3))
-
func arithmeticTriplets(nums []int, diff int) (ans int) { n := len(nums) for i := 0; i < n; i++ { for j := i + 1; j < n; j++ { for k := j + 1; k < n; k++ { if nums[j]-nums[i] == diff && nums[k]-nums[j] == diff { ans++ } } } } return }
-
function arithmeticTriplets(nums: number[], diff: number): number { const n = nums.length; let ans = 0; for (let i = 0; i < n; ++i) { for (let j = i + 1; j < n; ++j) { for (let k = j + 1; k < n; ++k) { if (nums[j] - nums[i] === diff && nums[k] - nums[j] === diff) { ++ans; } } } } return ans; }