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

1679. K 和数对的最大数目-自定义哈希表解决

1679. K 和数对的最大数目-自定义哈希表解决

给你一个整数数组 nums 和一个整数 k 。

每一步操作中,你需要从数组中选出和为 k 的两个整数,并将它们移出数组。

返回你可以对数组执行的最大操作数。

示例 1:

输入:nums = [1,2,3,4], k = 5
输出:2
解释:开始时 nums = [1,2,3,4]:

  • 移出 1 和 4 ,之后 nums = [2,3]
  • 移出 2 和 3 ,之后 nums = []
    不再有和为 5 的数对,因此最多执行 2 次操作。

示例 2:

输入:nums = [3,1,3,4,3], k = 6
输出:1
解释:开始时 nums = [3,1,3,4,3]:

  • 移出前两个 3 ,之后nums = [1,4,3]
    不再有和为 6 的数对,因此最多执行 1 次操作。

博主感觉今天有点倒霉,题目都好复杂,解题代码如下:

#define size 1000
struct hash{
    int val;
  int count;
    struct hash *next;
};
void hash_add(struct hash *h,int val,int count){
    struct hash *p=(struct hash *)malloc(sizeof(struct hash));
    p->val=val;
     p->count=count;
  
    p->next=h->next;
    h->next=p;
}


bool  hash_find(struct hash *h,int val){
     struct hash *p=h->next;
     while(p){
         if(p->val==val&&p->count>=1)return true;
         p=p->next;
     }
     return false;
}
bool  hash_find2(struct hash *h,int val){
     struct hash *p=h->next;
     while(p){
         if(p->val==val)return true;
         p=p->next;
     }
     return false;
}
void  hash_count_add(struct hash *h,int val){
     struct hash *p=h->next;
     while(p){
         if(p->val==val){
              p->count++;
              break;

         }
        
         p=p->next;
     }
     return false;
}

void  hash_count_sub(struct hash *h,int val){
     struct hash *p=h->next;
     while(p){
         if(p->val==val){
              p->count--;
              break;

         }
        
         p=p->next;
     }
   
}

int maxOperations(int* nums, int numsSize, int k){
      struct hash *h=(struct hash *)malloc(sizeof(struct hash)*size);
      int i,j;
    
   
    for(i=0;i<size;i++){
       (h+i)->next=NULL;
    }
    int re=0;
    for(int i=0;i<numsSize;i++){
        if(nums[i]<=k){
         //   printf("* ");
            if(hash_find(h+(k-nums[i])%size,k-nums[i])){
                re++;
                hash_count_sub(h+(k-nums[i])%size,k-nums[i]);
                  continue;

            }
          
         }
        if(!hash_find2(h+nums[i]%size,nums[i])){
            hash_add(h+nums[i]%size,nums[i],1);
          //  printf("%d ",nums[i]);

        }
        else{
             hash_count_add(h+nums[i]%size,nums[i]);

        }

    }

    for(i=0;i<size;i++){
        struct hash *p=(h+i)->next;
        while(p){
            printf("%d ",p->val);
            p=p->next;
        }
    }
return re;
}

相关文章:

  • 【Objective-C内存管理之引用计数】
  • 找工作经验总结——嵌入式软件工程师必备的能力(表达篇)
  • 【vue基础篇】极简 ESLint + Prettier 配置教程
  • 线性代数-----矩阵复习2
  • 个人算法重刷记录
  • Charles日常使用
  • COLING 2022|CSL: 大规模中文科学文献数据集
  • angular开发新页面步骤总结
  • pta数据结构day12
  • Java并发编程解析 | 基于JDK源码解析Java领域中ReentrantLock锁的设计思想与实现原理 (一)
  • Shell练习2
  • [c语言]小课堂 day2
  • Spark实时数仓的项目实现
  • 数据挖掘经典十大算法_K-Means算法
  • JavaScript面向对象
  • [NodeJS] 关于Buffer
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • android图片蒙层
  • Codepen 每日精选(2018-3-25)
  • docker容器内的网络抓包
  • FastReport在线报表设计器工作原理
  • Flex布局到底解决了什么问题
  • HTTP中GET与POST的区别 99%的错误认识
  • javascript面向对象之创建对象
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • ng6--错误信息小结(持续更新)
  • vue-cli3搭建项目
  • 分类模型——Logistics Regression
  • 基于组件的设计工作流与界面抽象
  • 聊聊directory traversal attack
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 为什么要用IPython/Jupyter?
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #1014 : Trie树
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (十一)图像的罗伯特梯度锐化
  • (一) storm的集群安装与配置
  • (原)本想说脏话,奈何已放下
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net 4.0发布后不能正常显示图片问题
  • .NET CORE Aws S3 使用
  • .NET MVC之AOP
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @RequestBody的使用