网站模仿,360免费建站网址是什么,7 the wordpress,北京网站建设类岗位1、题目
给你一个下标从 0 开始、严格递增 的整数数组 nums 和一个正整数 diff 。如果满足下述全部条件#xff0c;则三元组 (i, j, k) 就是一个 算术三元组 #xff1a;
i j k #xff0c; nums[j] - nums[i] diff 且 nums[k] - nums[j] diff 返回不同 算术三…1、题目
给你一个下标从 0 开始、严格递增 的整数数组 nums 和一个正整数 diff 。如果满足下述全部条件则三元组 (i, j, k) 就是一个 算术三元组
i j k nums[j] - nums[i] diff 且 nums[k] - nums[j] diff 返回不同 算术三元组 的数目。
示例 1
输入nums [0,1,4,6,7,10], diff 3 输出2 解释 (1, 2, 4) 是算术三元组7 - 4 3 且 4 - 1 3 。 (2, 4, 5) 是算术三元组10 - 7 3 且 7 - 4 3 。 示例 2
输入nums [4,5,6,7,8,9], diff 2 输出2 解释 (0, 2, 4) 是算术三元组8 - 6 2 且 6 - 4 2 。 (1, 3, 5) 是算术三元组9 - 7 2 且 7 - 5 2 。
提示
3 nums.length 200 0 nums[i] 200 1 diff 50 nums 严格 递增。
2、解
对nums进行遍历每个三元组即为{num[i]. nums[i] diff, nums[i] 2*diff} 寻找其是否存在每个元素对应的三元组中的后两个元素, 如果存在结果1。 int arithmeticTriplets(vectorint nums, int diff){int result 0;for(int i 0; i nums.size(); i){vectorint::iterator mid find((nums.begin() i), nums.end(), nums[i] diff);vectorint::iterator last find((nums.begin() i 1), nums.end(), nums[i] 2*diff);if(mid ! nums.end() last ! nums.end()){result;}}return result;}也可以先将nums通过哈希集合存储后进行查找 int arithmeticTriplets(vectorint nums, int diff) {unordered_setint hashSet;for (int x : nums) {hashSet.emplace(x);}int ans 0;for (int x : nums) {if (hashSet.count(x diff) hashSet.count(x 2 * diff)) {ans;}}return ans;}