2023-05-12每日一题
一、题目编号
2441. 与对应负数同时存在的最大正整数
二、题目链接
三、题目描述
给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。
返回正整数 k ,如果不存在这样的整数,返回 -1 。
四、解题代码
class Solution {
public:
int findMaxK(vector<int>& nums) {
int hash[2010];
memset(hash, 0, sizeof(hash));
for(int i = 0; i < nums.size(); ++i){
hash[nums[i]+1000]++;
}
for(int i = 2000; i > 1000; --i){
if(hash[2000-i] > 0 && hash[i] > 0){
return i-1000;
}
}
return -1;
}
};
五、解题思路
(1) 首先先用哈希表来存储数字。
(2) 然后逆序遍历(即从数字大的往数字小的进行遍历),判断是否包含自身与对应的负数都在数组中存在的最大正整数 k ,存在的判断方式就是哈希表中存在自身与对应的负数。
(3) 如果不存在则输出-1即可。