首页 > 试题广场 >

k-dis数对

[编程题]k-dis数对
  • 热度指数:1062 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为 n 的整数数组 nums ,和一个正整数 k,你需要输出不同的 k-dis 数对数量。
k-dis 数对定义为一个整数对 ,满足 ,且

数据范围: 1 \leq n \leq 10^5 \|nums_i| \leq 10^7 \0 \leq k \leq 2 * 10^7 \
示例1

输入

[3,1,4,6,5],3

输出

2

说明

(4,1),(6,3) 
示例2

输入

[3,1,4,6,4],3

输出

2

说明

(4,1) (6,3) 虽然有两个 (4,1) 数对,但只统计不同的数对 
头像 何成HN
发表于 2025-12-28 18:15:39
遍历整个数组,用字典dic存储已经出现过的数字,用集合ans去重存储所有满足条件的数值队对元组。|nums[i]-nums[j]|=k,则nums[i]-nums[j]=k或nums[i]-nums[j]=-k。遍历数组当前元素为x,寻找匹配为k的元素是不是出现过,匹配的元素有:x+k和x-k两个。 展开全文
头像 哈哈哈哈哈HA
发表于 2024-01-08 22:01:10
空间换时间。。。去重有没有更好的办法 import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums 展开全文
头像 比卡姆贝特
发表于 2024-03-08 00:01:57
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @param k int整型 # @return int整型 # class Solution: def k_dis(self , nums: 展开全文
头像 fred-coder
发表于 2022-05-08 13:35:40
由于数组的长度考虑采用哈希的方式,只遍历一次数组,利用 set 对结果进行去重 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @param k int整型 # @return int整型 # fro 展开全文