2441. 与对应负数同时存在的最大正整数-哈希法(自定义哈希表)

2441. 与对应负数同时存在的最大正整数-哈希法

给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。

返回正整数 k ,如果不存在这样的整数,返回 -1 。

示例 1:

输入:nums = [-1,2,-3,3]
输出:3
解释:3 是数组中唯一一个满足题目要求的 k 。

示例 2:

输入:nums = [-1,10,6,7,-7,1]
输出:7
解释:数组中存在 1 和 7 对应的负数,7 的值更大。

示例 3:

输入:nums = [-10,8,6,7,-2,-3]
输出:-1
解释:不存在满足题目要求的 k ,返回 -1 。

这题博主写了一个哈希表数据结构哦还是很不错的,感兴趣的可以学习一下:

#define size 733
struct hash{
    struct hash *next;
    int val;

};
void add_hash(struct hash *h,int val){
    struct hash *p=(struct hash *)malloc(sizeof(struct hash));
    p->val=val;
    p->next=h->next;
    h->next=p;

}
bool find_hash(struct hash *h,int val){
    struct hash *p=h->next;
    while(p){
        if(p->val==val){
            return true;
        }
        p=p->next;
    }
    return false;
}

int findMaxK(int* nums, int numsSize){
    struct hash *h=(struct hash *)malloc(sizeof(struct hash)*size);
    for(int i=0;i<size;i++){
        (h+i)->next=NULL;
    }
    for(int i=0;i<numsSize;i++){
        add_hash(h+abs(nums[i])%size,nums[i]);
      
    }
    int max=-1;
     for(int i=0;i<numsSize;i++){
        if(find_hash(h+abs(nums[i])%size,-nums[i])){
            max=fmax(max,abs(nums[i]));

        }
    }
    return max;

    

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值