当前位置: 首页 > news >正文

LeetCode刷题---双指针---532

数组中的 k-diff 数对

532. 数组中的 k-diff 数对 - 力扣(LeetCode)

题目

给你一个整数数组 nums 和一个整数 k,请你在数组中找出 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。

k-diff 数对定义为一个整数对 (nums[i], nums[j]) ,并满足下述全部条件:

  • 0 <= i, j < nums.length
  • i != j
  • |nums[i] - nums[j]| == k

注意|val| 表示 val 的绝对值。

示例 1:

输入:nums = [3, 1, 4, 1, 5], k = 2
输出:2
解释:数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。
尽管数组中有两个 1 ,但我们只应返回不同的数对的数量。

示例 2:

输入:nums = [1, 2, 3, 4, 5], k = 1
输出:4
解释:数组中有四个 1-diff 数对, (1, 2), (2, 3), (3, 4) 和 (4, 5) 。

示例 3:

输入:nums = [1, 3, 1, 5, 4], k = 0
输出:1
解释:数组中只有一个 0-diff 数对,(1, 1) 。

提示:

  • 1 <= nums.length <= 104
  • -107 <= nums[i] <= 107
  • 0 <= k <= 107

自己的思路和代码

思路

        思路很简单,当k=0的时候,就统计数组中相同元素的个数就可以了。当k≠0时,我们可以想把数组存储到一个set中,这样保证了顺序也去除了相同的元素,然后利用双指针就可以解决问题了。

代码
class Solution {
public:int findPairs(vector<int>& nums, int k) {if(nums.size() == 1) return 0;int sum = 0;if(k==0) {unordered_map<int, int> map;for(auto i : nums) {map[i]++;}for(auto it=map.begin(); it!=map.end(); it++) {if(it->second>1) sum++;}} else {set<int> table;for(auto i : nums) {table.insert(i);}if(table.size() == 1) sum = 0;auto left=table.begin(), right=++table.begin();while(right!=table.end() && left != --table.end()) {if(*right - *left < k) {right++;} else if(*right - *left == k) {sum++;left++;right++;} else {left++;}}}return sum;}
};

http://www.lryc.cn/news/543762.html

相关文章:

  • cpp单调栈模板
  • PyCharm 的使用 + PyCharm快捷键 + 切换中文界面
  • SSL/TLS 协议、SSL证书 和 SSH协议 的区别和联系
  • 一个典型的要求: Python | C#实现年月日创建文件夹 时分秒对应文件名的保存路径
  • 知识库功能测试难点
  • 如何实现某短视频平台批量作品ID的作品详情采集
  • uniapp中使用leaferui使用Canvas绘制复杂异形表格的实现方法
  • 判别分析:原理推导、方法对比与Matlab实战
  • PMP项目管理—整合管理篇—4.管理项目知识
  • Makefile编写和相关语法规则
  • 点云 PCL 滤波在自动驾驶的用途。
  • NL2SQL的应用-长上下文模型在处理NL2SQL任务时,相较于传统模型,有哪些显著的优势
  • 图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)
  • 探寻数组中两个不重复数字的奥秘:C 语言实战之旅
  • Mercury、LLaDA 扩散大语言模型
  • 【ESP32S3接入讯飞在线语音识别】
  • 深入了解 SSH 及其相关协议
  • 微信小程序源码逆向 MacOS
  • 【我的 PWN 学习手札】House of Husk
  • (八)趣学设计模式 之 装饰器模式!
  • 设计后端返回给前端的返回体
  • Element Plus中el-select选择器的下拉选项列表的样式设置
  • C高级(shell)
  • 子宫腺肌症是如果引起的?
  • 网络安全学习中,web渗透的测试流程是怎样的?
  • 【软考】【2025年系统分析师拿证之路】【啃书】第十四章 软件实现与测试(十五)
  • 自然语言处理NLP深探
  • 加载互联网免费地图资源并通过CesiumEarth快速浏览
  • Android 键盘输入按确认或换行 直接触发提交
  • halcon三维点云数据处理(二十七)remove_bin_for_3d_object_localization