mcbbnb 2023-08-12 19:05 采纳率: 85.7%
浏览 5
已结题

c++K型数对问题!


描述

给定长度为 n 的正整数序列 a 1,a 2…,a n,请回答有多少对 {i,j} 满足 i<j 且 a i +a j=k

输入描述

第一行两个整数 n,k

第二行 n 个整数,表示序列中的数

输出描述

输出一个整数,表示答案

用例输入 1 
4 3
1 1 2 2
用例输出 1 
4
提示

样例1解释
在序列 1,1,2,2 中,a 1+a 3=3, a 1+a 4=3, a 2 +a 3 =3, a 2 +a 4=3
所以符合题意的数对有 {1,3},{1,4},{2,3},{2,4},共 4 对

数据范围
对于 20% 的数据,2≤n≤1000,1≤k≤2000,1a i1000a i两两不同
对于 50% 的数据,2≤n≤100000,1≤k≤200000,1a i100000a i两两不同
对于 100% 的数据,2≤n≤100000,1≤k≤200000,1a i≤10 9 ,序列中可能有相等的数
  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-12 22:46
    关注

    【以下回答由 GPT 生成】

    ## 根据题目要求我们要找到有多少对数满足其和等于给定的值,我们可以遍历整个序列,并使用一个哈希表来记录每个数出现的次数。
    ## 然后,对于每个数a,我们可以计算出与之配对的数b=k-a的个数。
    ## 最后,将所有的配对数相加即可得到满足条件的数对的个数。
    
    def countPairs(nums, k):
        counts = {}  ## 哈希表,用来记录每个数出现的次数
        result = 0  ## 结果变量
        for num in nums:
            complement = k - num  ## 计算与当前数配对的数的值
            if complement in counts:  ## 如果配对的数已经在哈希表中存在
                result += counts[complement]  ## 将配对的次数加到结果中
            if num in counts:  ## 如果当前数已经在哈希表中存在
                counts[num] += 1  ## 将当前数的出现次数加1
            else:
                counts[num] = 1  ## 初始化当前数的出现次数为1
        return result
    
    ## 测试示例
    nums = [1, 1, 2, 2]
    k = 3
    countPairs(nums, k)
    # 输出为 4
    


    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月21日
  • 已采纳回答 8月13日
  • 创建了问题 8月12日

悬赏问题

  • ¥100 用数字代替ip主机号断与旋转链接号段
  • ¥20 学校内手机热点不能使用
  • ¥15 qwen模型微调训练时grad_norm为0.0或为nan
  • ¥15 若依- Spring cloud-plus集成阿里云schedulerX再控制台应用管理找不到实例
  • ¥15 用vs2022 fortran调试只无法查看数组的值,显示发生未指定的错误
  • ¥50 SGD Gateway 是否可以与 SGD Server 装在一台服务器上?
  • ¥15 gge梦幻西游的地图制作
  • ¥15 对计算机的学习没有方向
  • ¥15 用VBA抓取淘宝的发票号码和下载发票pdf遇到的问题
  • ¥20 java excel导出有什么解决方案