数字营销包括什么安徽网站推广优化
2367. 算术三元组的数目
题目:
给你一个下标从 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 严格 递增
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-arithmetic-triplets
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
首先,我们建立一个map容器来存储原nums容器中的所有数据。
其次,我们对nums容器进行遍历,并将其中的每个值当做map的键放入到map容器中,令值为i。
最后,我们再次遍历nums容器,并且利用count函数,把每个值当做中间值,判断是否存在合适的三元组,如果存在,就令答案ans加一。
返回最终结果ans即可。
代码:
class Solution {
public:int arithmeticTriplets(vector<int>& nums, int diff) {int ans = 0;map<int,int> mp;for(int i = 0;i < nums.size();i++)mp[nums[i]] = i;for(int i = 1;i < nums.size();i++)if(mp.count(nums[i] - diff) && mp.count(nums[i] + diff))ans++;return ans;}
};