Open carloscn opened 1 year ago
static int32_t arithmetic_triplets(int32_t *nums, size_t nums_size, int32_t diff)
{
int32_t ret = 0;
UTILS_CHECK_PTR(nums);
UTILS_CHECK_LEN(nums_size);
for (size_t i = 0; i < nums_size; i ++) {
for (size_t j = i + 1; j < nums_size; j ++) {
for (size_t k = j + 1; k < nums_size; k ++) {
if ((nums[j] - nums[i] == diff) &&
(nums[k] - nums[j] == diff)) {
ret ++;
}
}
}
}
finish:
return ret;
}
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, and nums[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.