差的绝对值为 K 的数对数目

差的绝对值为 K 的数对数目

给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k 。

|x| 的值定义为:

如果 x >= 0 ,那么值为 x 。 如果 x < 0 ,那么值为 -x 。

示例 1:

输入:nums = [1,2,2,1], k = 1 输出:4 解释:差的绝对值为 1 的数对为:

  • [1,2,2,1]
  • [1,2,2,1]
  • [1,2,2,1]
  • [1,2,2,1] 示例 2:

输入:nums = [1,3], k = 3 输出:0 解释:没有任何数对差的绝对值为 3 。 示例 3:

输入:nums = [3,2,1,5,4], k = 2 输出:3 解释:差的绝对值为 2 的数对为:

  • [3,2,1,5,4]
  • [3,2,1,5,4]
  • [3,2,1,5,4]

提示:

1 <= nums.length <= 200 1 <= nums[i] <= 100 1 <= k <= 99

这题也过于简单了吧,虽然好方法难想,但是暴力解的方法非常好想。

代码

int countKDifference(vector<int>& nums, int k) {
	int res = 0;
	for(int i=0;i<nums.size();i++){
		for(int j=i+1;j<nums.size();j++){
			if(abs(nums[i]-nums[j]) == k){
				res++;
			}
		}
	}
	return res;
}

虽然也看了官方的答案,但是没有看懂,但是学到了unordered_map这个东西。

由于unordered_map不允许存储具有重复键的元素,因此count()函数本质上检查unordered_map中是否存在具有给定键的元素。如果Map中存在具有给定键的值,则此函数返回1,否则返回0。

	unordered_map<int,char> example = {{1,'a'},{2,'b'}};
 	//查找的方法
    auto search = example.find(2);
    if (search != example.end()) {
        std::cout << "Found " << search->first << " " << search->second << '\n';
    } else {
        std::cout << "Not found\n";
    }
//遍历的方法
//方法一
for( auto& a : map)
{
    char key= a.first;
    int  value= a.second;
}
 
//方法二
for (auto it = map.begin(); it != map.end(); it++) 
{
		char key = it->first;
        int  value = it->second;
}

就这样吧,鉴于这道题简单些,今天应该还会再做一道。
一个集坚强与自信于一身的菇凉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淡雅的惆怅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值