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

【C语言刷力扣】2006.差的绝对值为K的数对数目

题目;

法一 解题思路:

        |num[i] - num[j]| = k 可以理解为 num[j] = num[i] + k 和 num[j] = num[i] - k 两种情况。

int countKDifference(int* nums, int numsSize, int k) {
    int ans = 0;
    int hash[101];
    memset(hash, 0, sizeof(hash));
    for (int i = 0; i < numsSize; i++) {
        int x = nums[i] + k;
        if (x >= 1 && x <= 100) ans += hash[x];
        x = nums[i] - k;
        if (x >= 1 && x <= 100) ans += hash[x];

        hash[ nums[i] ]++;
    }
    return ans;
}

法二 动态分配

typedef struct  {
    int key;            
    int val;
    UT_hash_handle hh;
} HashEntry;

int countKDifference(int* nums, int numsSize, int k){
    int ans = 0;
    HashEntry * cnt = NULL;
    for (int j = 0; j < numsSize; ++j) {
        HashEntry * pEntry = NULL;
        int curr = nums[j] - k;
        HASH_FIND(hh, cnt, &curr, sizeof(int),pEntry);
        if (NULL != pEntry) {
            ans += pEntry->val;
        }
        curr = nums[j] + k;
        HASH_FIND(hh, cnt, &curr, sizeof(int), pEntry);
        if (NULL != pEntry) {
            ans += pEntry->val;
        }
        HASH_FIND(hh, cnt, &nums[j], sizeof(int), pEntry);
        if (NULL == pEntry) {
            pEntry = (HashEntry *)malloc(sizeof(HashEntry));
            pEntry->key = nums[j];
            pEntry->val = 1;
            HASH_ADD(hh, cnt, key, sizeof(int), pEntry);
        } else {
            ++pEntry->val;
        }
    }
    HashEntry * curr = NULL, * next = NULL;
    HASH_ITER(hh, cnt, curr, next) {
        HASH_DEL(cnt, curr);
    }
    return ans;
}


http://www.kler.cn/news/362196.html

相关文章:

  • 华为OD机试 - 篮球比赛 - 递归(Java 2024 E卷 100分)
  • 【三】企业级JavaScript开发之手册与规范
  • 【Kuberntes】k8s权限管理
  • Wordpress GutenKit 插件 远程文件写入致RCE漏洞复现(CVE-2024-9234)
  • Windows环境下Qt Creator调试模式下qDebug输出中文乱码问题
  • 利用Docker搭建一套Mycat2+MySQL8一主一从、读写分离的最简单集群(保姆教程)
  • CTFHUB技能树之SQL——布尔盲注
  • 前端模块化技术 IIFE、CMD、UMD
  • 智能去毛刺:2D视觉引导机器人如何重塑制造业未来
  • MySQL 指定字段排序
  • 信息搜集 --前端js打点
  • 九、SQL 进阶之路:深入探索数据库查询的艺术
  • Chromium html<textarea>c++接口定义
  • 刷爆leetccode Day7 DP
  • 从程序小白到CTO的10年成长之路(7)
  • 大语言模型赋能病理AI,自动从报告文本中分类TNM分期|顶刊精析·24-10-17
  • [k8s理论知识]5.docker基础(四)Dockerfile构建
  • 微信支付V3 yansongda/pay 踩坑记录
  • 【数组知识的扩展①】
  • 一个基于Vue3开源免费的可快速开发中后台的框架,方便易用,业务没有瓶颈期!(附地址)
  • MySQL 数据库迁移至达梦 DM8 常见问题
  • Jmeter监控服务器性能
  • React源码03 - React 中的更新
  • grafana 配置prometheus
  • 界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?
  • Spring XML配置方式和Spring Boot注解方式的详细对照关系